0

アセットフォルダーから優先構成RGB565を使用してビットマップをロードし、フォーマット構成をログに記録していますが、常にARGB8888を取得しています。ビットマップの構成の一部はRGB565であると確信していますが、ARGB8888ビットマップのような領域をカバーしていると思います。 。どうすれば独自のフォーマットでそれらをロードできますか?

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeStream(in,null,options);
Log.d("a", fileName+" "+bitmap.getConfig().name());
4

1 に答える 1

1

あなたはいつもそのようにRGB565を得るとは限りません-それはエンコーディング(その好ましいエンコーディング)に依存します

ビットマップを読み込んだ後、新しい画像を作成してそこにコピーできます...画像を効果的に再エンコードしているためです。

Bitmap maskBitmap = Bitmap.createBitmap( orig.getWidth(), orig.getHeight(), Bitmap.Config.RGB_565 );
Canvas c = new Canvas();
c.setBitmap(maskBitmap);
Paint p = new Paint();
p.setFilterBitmap(true); // possibly not nessecary as there is no scaling
c.drawBitmap(orig,0,0,p);
orig.recycle();

次に、ロードされたビットマップとしてmaskBitmapを使用できます。

于 2012-08-27T19:37:15.883 に答える