Сохранение растрового изображения в Android

Я пытаюсь реализовать проект стеганографии для Android. Я манипулировал значениями пикселей и создал новое растровое изображение. Теперь, когда я сохраняю растровое изображение в память телефона или на карту памяти, используя

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   

и попробуйте получить доступ к пикселям обратно, используя getPixels();

значения возвращаются обратно к исходному растровому изображению, т.е. а не к обработанному растровому изображению. Кто-нибудь может понять, почему это так?


person Desert Ice    schedule 27.11.2011    source источник


Ответы (2)


File myDir=new File("/sdcard/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete (); 
try {
       FileOutputStream out = new FileOutputStream(file);
       finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}

посмотрите на этот ответ https://stackoverflow.com/a/7887114/964741

person RajaReddy PolamReddy    schedule 27.11.2011
comment
На самом деле создать файл не проблема, но значения пикселей растрового изображения меняются. Есть ли способ предотвратить это? - person Desert Ice; 27.11.2011
comment
Например, значения растрового изображения для красного, синего и зеленого были 8,8,15, но после сохранения растрового изображения значения были 16 16 16. Кто-нибудь может сказать мне, как я могу предотвратить это? - person Desert Ice; 27.11.2011

JPEG с потерями, он может изменять значения пикселей при сжатии. Используйте PNG, если хотите сохранить цвета.

person yoah    schedule 26.01.2013