1

私の Android アプリケーションは、画像を読み込み、何らかの処理を行い、処理された画像を SD カードに保存します。バッファを使用する代わりに、一時ファイルを SD カードに保存します。たとえば、背景の読み取り、画像のスクロール、注釈の描画、保存された一時ファイルで背景と注釈をマージして次の背景として使用するなどです。典型的なスニペット:

bitmap = Bitmap.createBitmap(imageSizeX, imageSizeY, Bitmap.Config.ARGB_8888);

ビットマップ = BitmapFactory.decodeFile(パス、オプション);

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 出力);

すべて正常に動作しますが、場合によっては、保存された画像に次の記事で説明されているようなノイズが追加されることがあります: ビットマップのサイズ変更と回転: 線形ノイズ

引用された投稿の著者は、サブサンプリングによって問題を解決しましたが、私はそれをしたくありません。

私はここで提案された解決策を試しました: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/#more-1218 : getWindow().setFormat(PixelFormat.TRANSLUCENT); 32ビットを強制します。

これはあまり変わりません。ディザ フラグを設定しても設定しなくても、あまり変わらないようです。他のアイデアはありますか?

4

1 に答える 1

0

私自身の質問への回答: .jpg ではなく .png に圧縮することで、ノイズが消えるか、少なくとも結果が改善されます。

bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);

.jpg ではじゅうたんのテクスチャのように見える同じ空が、.png では滑らかできれいに見えます。.png と .jpg に圧縮された同じ画像の通常の違いよりも違いがはるかに明白であるため、Android の実装に依存していると思います。TRANSLUCENT と DITHER を明示的に設定しても、いずれにしても大きな違いはありません。

于 2011-03-23T19:07:53.280 に答える