如何在灰度图像中设置 DPI 信息?

Posted

技术标签:

【中文标题】如何在灰度图像中设置 DPI 信息?【英文标题】:How to set DPI information in a grayscale image? 【发布时间】:2015-02-16 11:40:39 【问题描述】:

首先,您好,感谢您的机会。

我有一个解决方案,可以扫描(通过本机 twain 源)图像(或许多图像)并将它们保存到文件系统中的文件夹中。

我的问题是:我做了一些测试,我总是得到 96 图像 DPI(我使用 ImageIO.write 将来自 twain API 的图像保存在 BufferedImage 对象中)。 比,我在此链接 (How to set DPI information in an image?) 的 *** 中看到了 Peter Kofler 的答案,它适用于彩色和黑白情况(从 TwainCapability 对象设置)。

但是,对于我扫描的灰度图像,DPI 无论如何都不会改变!!!

我正在使用 MS Paint -> 属性对其进行验证。当我扫描灰度图像时,它总是 96 DPI。

知道在这种情况下如何设置 DPI 吗?

我正在设置 DPI,就像 Peter Kofler 示例一样:

resolutionState = 100;
//or resolutionState = 200;
//or resolutionState = 300;
double dotsPerMilli = resolutionState / 10 / 2.54;

【问题讨论】:

是jpg还是png? 我正在尝试保存和操作 PNG 图像。并用 BMP 做了一些测试(结果相同)。但是,它可能与其他类型具有相同的行为。 【参考方案1】:

提前多谢一次。

我找到了答案和一种方法!!!

在以下链接中:How to change the DPI from 96 to 300 of an image in java after resizing?“user3603284”发布了一个帮助我执行此操作的解决方案。

我从 png 更改为 jpeg(项目规范无关紧要),然后,我的工作就像一个魅力!!!

代码:

File imageFile = new File("C:/ScannerOutput/scannerImage" + System.currentTimeMillis() +".jpeg");
FileOutputStream fos = new FileOutputStream(imageFile);
JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
jpegEncodeParam.setQuality(0.75f, false);
jpegEncodeParam.setXDensity(resolutionState); //DPI rate 100, 200 or 300
jpegEncodeParam.setYDensity(resolutionState); //DPI rate 100, 200 or 300
jpegEncoder.encode(image, jpegEncodeParam);
image.flush();
fos.close();

非常感谢,一直在帮助我=)

【讨论】:

以上是关于如何在灰度图像中设置 DPI 信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中设置启动屏幕图像

无法在导航栏中设置完整图像

MPDF 文档和图像 DPI 问题

如何在 jekyll 中设置大小/旋转图像?

如何在 Swift 中设置图像按钮

如何在videoview中设置播放按钮图像png?