android更好保存图片选项?

时间:2012-10-18 15:06:17

标签: java android

目前我正在使用compress方法将使用Android手机上的相机硬件拍摄的图像保存到SD卡。

try {
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 10;
Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length,options);

fileOutputStream = new FileOutputStream(
sdImageMainDirectory.toString() +"/"+fileName+".png");

BufferedOutputStream bos = new BufferedOutputStream(
fileOutputStream); 
myImage.compress(CompressFormat.PNG, 100, bos);
bos.flush();
bos.close();

现在这种方法非常精细,但是,它所保存的图像质量几乎不值得首先拍照。我正在寻找一种更好的方法来保存更高质量的图片。

1 个答案:

答案 0 :(得分:2)

options.inSampleSize = 10;

这是您的质量损失:这会在heigthwidth

中创建1/10的图像

来自doc:

  

如果设置为值> 1,请求解码器对原始进行二次采样   图像,返回较小的图像以节省内存。样本量是   任一维度中对应于单个像素的像素数   解码后的位图中的像素。例如,inSampleSize == 4返回一个   图像是原稿宽度/高度的1/4,和1/16   像素数。任何值< = 1都被视为1.注意:   解码器将尝试满足此请求,但生成的位图可能会   具有不同的尺寸,正是所要求的。   此外,2的幂通常更快/更容易让解码器兑现。