Преобразовать представление в растровое изображение FileNotFoundException - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь преобразовать свой LinearLayout в растровое изображение, чтобы сохранить текущее содержимое макета в виде изображения на SD-карте.Сначала я создаю растровое изображение и холст и прикрепляю макет к холсту.Выполнены шаги из http://www.brighthub.com/mobile/google-android/articles/30676.aspx#comments.

//code to add child view into layout before creating bitmap 
screenBitmap = Bitmap.createBitmap(200,200,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(screenBitmap);
layout.draw(canvas);   

Когда я нажимаю кнопку сохранения, он должен сохранить текущий макет как изображение на SD-карту.Вот мои шаги:

FileOutputStream outStream = null;
File file = new File("/sdcard/Health Management System/");
file.mkdirs();

File outputFile = new File(file, fileName);
outStream = new FileOutputStream(outputFile);
BufferedOutputStream bos = new BufferedOutputStream(outStream);

bos.flush();
bos.close();

screenBitmap.compress(Bitmap.CompressFormat.PNG, 100,bos);

Можно создать папку на SD-карте, но в этой папке не создано ни одного файла.Это всегда дает мне FileNotFoundException.Я не уверен, что это проблема создания файла или проблема screenBitmap.Кто-нибудь может дать мне некоторую подсказку?Спасибо!

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

Включены ли у вас нужные разрешения в манифесте Android? то есть android.permission.WRITE_EXTERNAL_STORAGE. Я получал то же FileNotFoundException при попытке сохранить на SD перед добавлением разрешения.

0 голосов
/ 02 сентября 2010

После

File outputfile = new File(file, filename);

Вставьте это:

outputfile.createNewFile();
...