I am opening a png image into a Bitmap, making some modifications to it and then saving it to disk as a jpg. In the case where the png has some transparent areas, they are saved as black. Is there a way to change this default behavior so the image is saved with a different color background such as white?
Thanks
Yes, the bitmap format does support transparency.
Go to Bitmaps > Bitmap Color Mask, confirm that Hide Colors is selected, and check the box for the first color selection slot. Select the eyedropper below the color selections and click the background color you want to remove. Click Apply when finished.
You could draw it to a new bitmap, e.g.
Bitmap newBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), image.getConfig()); Canvas canvas = new Canvas(newBitmap); canvas.drawColor(Color.WHITE); canvas.drawBitmap(image, 0F, 0F, null);
then save new bitmap instead
To save an image and retain its transparent areas you can't save it as JPG, you have to save it as PNG, and not only that, but setting the setting of setHasAlpha()
to true BEFORE saving the image, so it would be like that:
before saving:
mBitmap.setHasAlpha(true);
And when saving, save the image as PNG using whatever the method you are using for saving, for example:
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With