18

構成をに設定するために変換したいロード済みのビットマップがありBitmap.Config.RGB_565ます。Bitmapビットマップが既にメモリにロードされた後、この構成に変換する簡単な方法はありますか? たとえば、以下では、アプリケーション リソースからデコードされたビットマップがありますが、既にロードされているものをどのように変換すればよいでしょうBitmapRGB_565? 簡単なことだと思いますが、ビットマップを扱うのは初めてで、数時間オンラインで調べた後、残念ながら具体的に必要なものを見つけることができませんでした.

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig=Bitmap.Config.RGB_565
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options);
4

3 に答える 3

32

これを試すこともできます:

Bitmap converted = original.copy(Config.RGB_565, false);

Bitmap.copy()のドキュメントから:

このビットマップの寸法に基づいて新しいビットマップを作成し、新しいビットマップの構成を指定されたものに設定してから、このビットマップのピクセルを新しいビットマップにコピーしようとします。変換がサポートされていない場合、またはアロケーターが失敗した場合、これは NULL を返します。

ネイティブ ソース コードを調べると、 Bitmap.Configの任意の値を適切に変換できるはずです。

于 2014-08-15T18:29:05.593 に答える
29

私はこれをテストしていませんが、うまくいくはずです:

private Bitmap convert(Bitmap bitmap, Bitmap.Config config) {
    Bitmap convertedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config);
    Canvas canvas = new Canvas(convertedBitmap);
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    canvas.drawBitmap(bitmap, 0, 0, paint);
    return convertedBitmap;
}

次のようにメソッドを呼び出します。

Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565);

マトリックスで drawBitmap を使用すると、回転、ストレッチなど、あらゆる種類の追加の変換を行うことができます。

于 2013-02-25T03:29:10.017 に答える
0

ここで答えを見つけましたhttps://stackoverflow.com/a/12148450/1364673 、シリコンイーグルのおかげです 。

解決策は、上記のリンクの例に従って、必要なエンコーディングで新しいビットマップを作成することです。

于 2013-02-25T03:24:53.917 に答える