2

目前我正在使用压缩方法将使用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();

现在这工作得很好,但是,它保存的图像质量几乎不值得一开始就拍照。我正在寻找一种更好的方法来以更高的质量保存图片。

4

1 回答 1

2
options.inSampleSize = 10;

这是您的质量损失:这将创建一个 1/10 英寸的heigth图像width

从文档:

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

于 2012-10-18T15:23:26.310 回答