2013-02-25 12 views
10

設定をBitmap.Config.RGB_565に設定するために変換したいビットマップがロードされています。 Bitmapが既にメモリにロードされた後にBitmapをこの設定に変換する簡単な方法はありますか?たとえば、私はビットマップをアプリケーションリソースからデコードしていますが、既にロード済みのBitmapをどのように変換すればRGB_565になりますか?しかし、私はそれが単純なものだと確信しています。しかし、ビットマップを使って作業するのはかなり新しいです。オンラインで数時間を過ごした後、残念ながら私は特に必要なものを見つけることができませんでした。Bitmap.Config.RGB_565でメモリ内のビットマップをビットマップに変換する

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

答えて

21

私はこれをテストしていませんが、それは動作するはずです:あなたがいる場合などを伸ばし、回転などの追加的な変換のすべての種類を行うことができます

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

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; 
} 

呼び出し、このような方法をdrawBitmapをMatrixで使用します。

13

また、これを試すことができます。

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

をBitmap.copy()のdocumentationから:

トライをこのビットマップの大きさに基づいて新しいビットマップを作るために、新しい設定しますビットマップの設定を指定したものに変更し、このビットマップのピクセルを新しいビットマップにコピーします。変換がサポートされていない場合、またはアロケータが失敗した場合、NULLを返します。

ネイティブソースコードを調べると、Bitmap.Configの任意の値の間で変換する必要があります。

関連する問題