Java绘图bmp格式设置dpi
程序员文章站
2022-03-23 10:52:42
java默认输出图片的dpi只有72,想要得到更高或者更低分辨率的图片需要进行单独的设置。java自带的IIoMetadata可以对png、jpeg格式图片进行设置,但是bmp格式却无法设置dpi,因为直接不支持添加树节点参数,并且BMPMetadata只能用于读(isReadOnly = true)。我遇到的问题是需要输出600DPI的bmp格式的图片,最后找到的解决办法是使用common-imaging,BmpImageParser的writeImage方法可以写出图片文件,params中设...
java默认输出图片的dpi只有72,想要得到更高或者更低分辨率的图片需要进行单独的设置。
java自带的IIoMetadata可以对png、jpeg格式图片进行设置,但是bmp格式却无法设置dpi,因为直接不支持添加树节点参数,并且BMPMetadata只能用于读(isReadOnly = true)。
我遇到的问题是需要输出600DPI的bmp格式的图片,最后找到的解决办法是使用commons-imaging,
BmpImageParser的writeImage方法可以写出图片文件,params中设置相关需要的参数。
public void writeImage(BufferedImage src, OutputStream os, Map<String, Object> params)
private static void setBMPDpi(BufferedImage bufferedImage,String filePath,double DPI){
BmpImageParser parser = new BmpImageParser();
Map<String,Object> map = new HashMap<>();
PixelDensity pixelDensity = PixelDensity.createFromPixelsPerInch(DPI,DPI);
map.put("PIXEL_DENSITY", pixelDensity);
map.put("FORMAT","bmp");
File file = new File(filePath);
if(!file.getParentFile().exists())
file.getParentFile().mkdirs();
try(OutputStream outputStream = new FileOutputStream(filePath)) {
parser.writeImage(bufferedImage,outputStream,map);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException | ImageWriteException e) {
e.printStackTrace();
}
}
java对bmp文件修改的相关文档较少,找到这个第三方库后也是研究了一阵才搞出来了,应该还有更合适的的写法,任务时间紧迫就先凑活一下,记录在案,有空了再做统一的调整。
本文地址:https://blog.csdn.net/IranLin/article/details/114310666
上一篇: poj3087 Shuffle'm Up
下一篇: 我是*不知道疼