欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

相关标签: bmp java