У кого-нибудь есть способ сохранить BufferedImage
с прозрачностью как BMP в Java? Предпочтительно использовать ImageIO
API.
По какой-то причине я не могу написать BMP в формате ARGB (BGRA), хотя BMP поддерживает альфа-канал, по крайней мере, начиная с Win95. Однако я могу легко записать то же изображение в формате PNG. Он также отлично работает при сохранении изображения без альфы, например TYPE_INT_RGB
или TYPE_3BYTE_BGR
.
Рассмотрим следующий фрагмент кода:
public static void main(String[] args) throws IOException {
if (!ImageIO.write(new BufferedImage(300, 200, BufferedImage.TYPE_INT_ARGB), "BMP", new File("foo.bmp"))) {
System.err.println("Couldn't write BMP!");
}
if (!ImageIO.write(new BufferedImage(300, 200, BufferedImage.TYPE_INT_ARGB), "PNG", new File("foo.png"))) {
System.err.println("Couldn't write PNG!");
}
}
Вывод:
Couldn't write BMP!