【问题标题】:Setting DPI for PNG files为 PNG 文件设置 DPI
【发布时间】:2009-10-11 19:29:06
【问题描述】:

我有一堆使用我编写的 Java 图表工具创建的图表 - 它们大多是黑白图表,带有浅绿色的块,偶尔还有其他颜色。它们当前被保存为 JPG 文件,我想将它们插入到我正在为按需打印做准备的书中。

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

目前我使用 JPG 文件,但他们使用的打印工具需要 300 DPI,所以我修改了我的绘图工具,使用 getAsTree() 将 xDensity 和 yDensity 设置为 300,并将 resUnits 设置为 1,然后将图表扩展为3 倍 (300/96)。 IMO 结果看起来不错!

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

我的问题是 BMP 似乎没有 DPI,而且 PNGMetadata 似乎不支持 getAsTree()。有人可以指出我正确的方向吗?谢谢。

【问题讨论】:

    标签: png dpi


    【解决方案1】:

    getAsTree() 部分我不明白,但回答标题中出现的问题,为 PNG 文件设置 dpi,您可以使用 imagemagick 转换工具:

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

    【讨论】:

    • 我的意思是我想以编程方式设置 DPI……但我改变了主意!所以 imagemagick 听起来很有趣 - 谢谢!
    • 似乎在提供 PNG 作为输入时,alpha 通道丢失了。
    • "-alpha Set" 或 "-alpha On" 在这里可能会有所帮助。但是文档 (imagemagick.org/script/command-line-options.php) 有点混乱,我没有任何 alpha 通道 png 可供测试。
    【解决方案2】:

    PNG、BMP 和许多其他图像格式不会压缩您的图表 - 压缩可能是您的评论者想要的。 JPEG 非常适合照片,但不适合图表。

    您可能想研究 SVG 和其他矢量格式。或者,如果您的环境允许,导出 0% 压缩的 JPEG 文件并将其转换为另一种格式,以便以 300DPI 无损再现。

    希望有帮助!

    【讨论】:

    • +1。在我看来,这个问题是关于矢量与光栅图像的。并且 OP 肯定应该使用向量来创建图表。
    • PNG 确实会压缩您的图像。它只是一种无损压缩,而不是 JPEG 的有损压缩。
    【解决方案3】:

    我决定不尝试以编程方式执行此操作。相反,我在 PNG 中创建原始图表,然后使用 Irfanview 转换为 300 DPI。 Irfanview 的批处理功能让我可以在一次操作中转换为 300 DPI、放大以进行补偿并设置为灰度,并且一次处理多个文件。这似乎是最好的解决方案 - 但无论如何都要感谢大家!

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多