web-dev-qa-db-ja.com

保存した透明ビットマップの背景色を変更する方法

Png画像をビットマップで開き、いくつかの変更を加えてから、jpgとしてディスクに保存しています。 pngに透明な領域がある場合は、黒で保存されます。このデフォルトの動作を変更して、画像が白などの異なる色の背景で保存されるようにする方法はありますか?

ありがとう

18
cottonBallPaws

新しいビットマップに描画できます。

Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), image.getConfig());
Canvas canvas = new Canvas(newBitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(image, 0, 0, null);

代わりにnewBitmapを保存します

48
Daren Robbins

画像を保存してその透明部分をJPGとして保存できない場合は、PNGとして保存する必要があります。それだけでなく、setHasAlpha()の設定をtrueに設定する必要があります[ 〜#〜] before [〜#〜]画像を保存するので、次のようになります。

保存する前に:

mBitmap.setHasAlpha(true);

また、保存するときは、保存に使用している方法を使用して、画像をPNGとして保存します。例:

File file = new File(folderDir, name);
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}
FileOutputStream out = new FileOutputStream(file);
mBitmap.setHasAlpha(true);
mBitmap.compress(Bitmap.CompressFormat.PNG, 80, out);
out.flush();
out.close();
0
Muhammed Refaat