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インチの画像が作成されますheigthwidth

ドキュメントから:

値>1に設定すると、元の画像をサブサンプリングするようデコーダーに要求し、メモリを節約するために小さい画像を返します。サンプルサイズは、デコードされたビットマップの1つのピクセルに対応するいずれかの次元のピクセル数です。たとえば、inSampleSize == 4は、元の画像の幅/高さの1/4、ピクセル数の1/16の画像を返します。1未満の値は1と同じように扱われます。注:デコーダーはこの要求を実行しようとしますが、結果のビットマップは、要求されたものと正確に異なる次元を持つ場合があります。また、2の累乗は、多くの場合、デコーダーが尊重する方が高速で簡単です。

于 2012-10-18T15:23:26.310 に答える