Java绘图bmp格式设置dpi

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){
        
        Map<String, Object> map = new HashMap<>();
        PixelDensity pixelDensity = PixelDensity.createFromPixelsPerInch(DPI, DPI);
        map.put("PIXEL_DENSITY", pixelDensity);
        File file = new File(filePath);

        if (!file.getParentFile().exists())
            file.getParentFile().mkdirs();
        try (OutputStream outputStream = new FileOutputStream(filePath)) {
            Imaging.writeImage(bufferedImage, outputStream, imageFormat, map);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException | ImageWriteException e) {
            e.printStackTrace();
        }
}

java对bmp文件修改的相关文档较少,找到这个第三方库后也是研究了一阵才搞出来了,应该还有更合适的的写法,任务时间紧迫就先凑活一下,记录在案,有空了再做统一的调整。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值