为PNG文件设置DPI

9

我有一堆使用Java绘图工具创建的图表 - 它们大多是黑白图表,其中块为绿色,偶尔会有其他颜色。目前将它们保存为JPG文件,并想将它们插入到我正在准备的POD书籍中。

这本书是一个OpenOffice ODT文件,稍后将转换为PDF。

目前我使用的是JPG文件,但是打印设施需要300 DPI,因此我修改了我的绘图工具,使用getAsTree()设置xDensity和yDensity为300,resUnits为1,然后将图表扩大3倍(300/96)。结果看起来相当不错!

不幸的是,另一个论坛上的人指出JPG文件上的线条图被“模糊”,因此建议我改用PNG或可能是BMP文件,ODT文件都允许插入这两种格式的文件。

我的问题是BMP似乎没有DPI,而且PNGMetadata似乎不支持getAsTree()。 有人能指点我一下吗?谢谢。

3个回答

23

我不理解getAsTree()这部分的内容,但是回答标题中出现的问题,为PNG文件设置dpi,你可以使用ImageMagick的convert工具:

convert -density 300 -units pixelsperinch infile.jpg outfile.png

我只是想以编程的方式设置DPI...但我改变了主意!所以ImageMagick听起来很有趣 - 谢谢! - Paul Morrison
似乎当提供PNG作为输入时,透明通道会丢失。 - Paul Lammertsma
1
这里可能需要使用 "-alpha Set" 或 "-alpha On"。但是文档(http://www.imagemagick.org/script/command-line-options.php)有些混淆,而且我手头没有任何带有 alpha 通道的 png 图片来测试。 - RobS

3

PNG、BMP以及其他几十种图像格式不能压缩您的图表 - 压缩可能是您的评论者所指的。JPEG适用于照片,但对图表不太好。

您可能需要研究SVG和其他矢量格式。或者,如果您的环境允许,可以将JPEG导出为0%压缩,并将其转换为另一种格式,以在300DPI下进行无损重现。

希望这有所帮助!


+1。我认为这个问题是关于矢量图与光栅图像的。而且,楼主应该在自己创建的图表中使用矢量图。 - Sparhawk
2
PNG肯定会压缩您的图像。与JPEG的有损压缩相反,它只是一种无损压缩。 - Matt

0

我决定不尝试以编程方式完成这个任务。相反,我使用PNG创建原始图表,然后使用Irfanview将其转换为300 DPI。Irfanview的批处理功能使我可以一次性将其转换为300 DPI,进行比例缩放以进行补偿,并设置为灰度 - 并且可以同时处理多个文件。这似乎是最好的解决方案 - 但无论如何感谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接