目前我正在使用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();
现在这种方法非常精细,但是,它所保存的图像质量几乎不值得首先拍照。我正在寻找一种更好的方法来保存更高质量的图片。
答案 0 :(得分:2)
options.inSampleSize = 10;
这是您的质量损失:这会在heigth
和width
来自doc:
如果设置为值> 1,请求解码器对原始进行二次采样 图像,返回较小的图像以节省内存。样本量是 任一维度中对应于单个像素的像素数 解码后的位图中的像素。例如,inSampleSize == 4返回一个 图像是原稿宽度/高度的1/4,和1/16 像素数。任何值< = 1都被视为1.注意: 解码器将尝试满足此请求,但生成的位图可能会 具有不同的尺寸,正是所要求的。 此外,2的幂通常更快/更容易让解码器兑现。