Как изменить цвет фона сохраненного прозрачного растрового изображения

Я открываю png-изображение в растровое изображение, внося некоторые изменения в него, а затем сохраняю его на диск как jpg. В случае, когда png имеет несколько прозрачных областей, они сохраняются как черные. Есть ли способ изменить это поведение по умолчанию, поэтому изображение сохраняется с другим цветным фоном, например белым?

Спасибо

Ответ 1

Вы можете нарисовать его в новом растровом изображении, например

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 вместо

Ответ 2

Чтобы сохранить изображение и сохранить его прозрачные области, вы не можете сохранить его как JPG, вы должны сохранить его как PNG, причем не только это, но и установить для setHasAlpha() значение true ДО сохранения изображения, чтобы оно было как это:

перед сохранением:

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();