設定をBitmap.Config.RGB_565
に設定するために変換したいビットマップがロードされています。ビットマップがすでにメモリにロードされた後、Bitmap
をこの構成に変換する簡単な方法はありますか?たとえば、以下では、アプリケーションリソースからデコードされているビットマップがありますが、すでにロードされているBitmap
をRGB_565
に変換するにはどうすればよいですか?簡単なことだと思いますが、ビットマップの操作はかなり初めてで、数時間オンラインで調べた後、残念ながら、特に必要なものが見つかりませんでした。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig=Bitmap.Config.RGB_565
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options);
私はこれをテストしていませんが、動作するはずです:
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を使用すると、回転、ストレッチなど、あらゆる種類の追加の変換を実行できます。
これを試すこともできます:
Bitmap converted = original.copy(Config.RGB_565, false);
Bitmap.copy()の ドキュメント から:
このビットマップのサイズに基づいて新しいビットマップを作成し、新しいビットマップの構成を指定されたものに設定してから、このビットマップのピクセルを新しいビットマップにコピーしようとします。変換がサポートされていない場合、またはアロケータが失敗した場合、これはNULLを返します。
ネイティブソースコードを見ると、 Bitmap.Config の任意の値の間でうまく変換できるはずです。
ここで答えを見つけました https://stackoverflow.com/a/12148450/136467 、おかげで siliconeagle 。
解決策は、上記の例のリンクに従って、必要なエンコーディングで新しいビットマップを作成することです。