Java 使用ImageIO编写具有透明度的BMP
有没有人有办法在Java中以BMP的透明度存储BuffereImage?最好使用ImageIO API 由于某些原因,我无法以ARGB-BGRA格式编写BMP,即使如此。但是,我可以轻松地编写与PNG相同的图像。它还可以很好地存储没有alpha的图像,比如类型_INT_RGB或类型_3BYTE_BGR 考虑以下代码段:Java 使用ImageIO编写具有透明度的BMP,java,bufferedimage,javax.imageio,bmp,Java,Bufferedimage,Javax.imageio,Bmp,有没有人有办法在Java中以BMP的透明度存储BuffereImage?最好使用ImageIO API 由于某些原因,我无法以ARGB-BGRA格式编写BMP,即使如此。但是,我可以轻松地编写与PNG相同的图像。它还可以很好地存储没有alpha的图像,比如类型_INT_RGB或类型_3BYTE_BGR 考虑以下代码段: public static void main(String[] args) throws IOException { if (!ImageIO.write(new Bu
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!
在:
恐怕Java不支持32位BMP。您必须编写自己的或找到现有的库ImageJ,尽管我不知道它是否支持BMP。Wikipedia非常详细地介绍了文件格式,看起来非常简单,甚至给出了一个完整的32位BMP的逐字段示例。谢谢!我也发现了,这很令人失望。。。我可能会写我自己的BMP插件。毕竟,格式很简单-
public boolean canEncodeImage(ImageTypeSpecifier type) {
...
if (!(numBands == 1 || numBands == 3))
return false;