Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中保存位图_Java_Android_Bitmap_Bit Manipulation_Steganography - Fatal编程技术网

Java 在Android中保存位图

Java 在Android中保存位图,java,android,bitmap,bit-manipulation,steganography,Java,Android,Bitmap,Bit Manipulation,Steganography,我正在尝试为Android实现一个隐写术项目。我已经操纵了像素值并创建了一个新的位图。现在,当我使用 //fo denotes File output Stream Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo); //OR Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo); 并尝试使用getPixels()访问像素 //fo denotes File output Stream Bi

我正在尝试为Android实现一个隐写术项目。我已经操纵了像素值并创建了一个新的位图。现在,当我使用

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   
并尝试使用getPixels()访问像素

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   
这些值将恢复为原始位图,即,而不是经过处理的位图。 有人知道这是为什么吗

//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);   
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();
}

看看这个答案

JPEG是有损的,它可以在压缩时改变像素值。如果要保留颜色,请使用PNG。

实际创建文件时没有问题,但位图的像素值会发生变化。是否有办法防止这种情况发生?例如,红色、蓝色和绿色的位图值为8,8,15,但保存位图后,值为16。有人能告诉我如何防止这种情况发生吗?
//fo denotes File output Stream
Bitmap.compress(Bitmap.CompressFormat.JPEG,100,fo);
//OR
Bitmap.compress(Bitmap.CompressFormat.PNG,100,fo);