图像Java位图RLE8格式 3 周,3 日 Questions & Answers 770 Java ImageIO(或任何其他图像处理程序)是否支持BI_RLE8图像格式?我唯一能找到的就是BMPImageWriteParam,但我根本不知道如何使用它。 任何帮助都会很好
# 1 楼答案 如果要使用自定义参数保存图像,则必须使用^{},可以向其传递自定义参数以写入输出文件 可以使用^{}方法从ImageWriter获取参数,在该方法中可以设置压缩类型。您甚至不必将其强制转换为^{},因为可以通过^{}超级接口设置压缩类型 请注意,为了使用自定义压缩类型,必须将压缩模式设置为^{} 以下是完整的代码: BufferedImage bi = new BufferedImage(200, 100, BufferedImage.TYPE_BYTE_INDEXED); ImageWriter writer = ImageIO.getImageWritersByFormatName("bmp").next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionType("BI_RLE8"); writer.setOutput(new FileImageOutputStream(new File("test.bmp"))); writer.write(null, new IIOImage(bi, null, null), param); writer.dispose(); 请注意,并非所有类型的^{}都可以使用BI_RLE8压缩。 对于exmaple BI_RLE8压缩支持BufferedImage.TYPE_BYTE_INDEXED和BufferedImage.TYPE_BYTE_GRAY,但不支持BufferedImage.TYPE_3BYTE_BGR,在这种情况下,ImageWriter.write()方法(实际上是BMPImageWriter.write())将抛出IOException
# 2 楼答案 有关如何使用ImageWriter和ImageWriteParam(在您的案例中使用BMPImageWriteParam的实例)进行编写,请参见this example。向下滚动一点以找到编写示例 而不是台词: ImageWriteParam param = writer.getDefaultWriteParam(); 您应该插入如下内容: BMPImageWriteParam param = new BMPImageWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionType("BI_RLE8"); 您可以安全地传递null以获取缩略图和元数据(示例中为...)
# 1 楼答案
如果要使用自定义参数保存图像,则必须使用^{} ,可以向其传递自定义参数以写入输出文件
可以使用^{} 方法从} ,因为可以通过^{} 超级接口设置压缩类型
ImageWriter
获取参数,在该方法中可以设置压缩类型。您甚至不必将其强制转换为^{请注意,为了使用自定义压缩类型,必须将压缩模式设置为^{}
以下是完整的代码:
请注意,并非所有类型的^{} 都可以使用
BI_RLE8
压缩。对于exmaple
BI_RLE8
压缩支持BufferedImage.TYPE_BYTE_INDEXED
和BufferedImage.TYPE_BYTE_GRAY
,但不支持BufferedImage.TYPE_3BYTE_BGR
,在这种情况下,ImageWriter.write()
方法(实际上是BMPImageWriter.write()
)将抛出IOException
# 2 楼答案
有关如何使用
ImageWriter
和ImageWriteParam
(在您的案例中使用BMPImageWriteParam
的实例)进行编写,请参见this example。向下滚动一点以找到编写示例而不是台词:
您应该插入如下内容:
您可以安全地传递
null
以获取缩略图和元数据(示例中为...
)