Как изменить цвет фона сохраненного прозрачного растрового изображения - PullRequest
18 голосов
/ 01 января 2011

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

Спасибо

Ответы [ 2 ]

45 голосов
/ 01 января 2011

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

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

, а затем сохранить вместо него новыйBitmap

0 голосов
/ 02 мая 2017

Чтобы сохранить изображение и сохранить его прозрачные области, вы не можете сохранить его как 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();
...