如何更改 PNG 文件的 DPI?(在命令行中,无需 ImageMagick)

如何更改 PNG 文件的 DPI?(在命令行中,无需 ImageMagick)

我正在寻找一种方法来更改 PNG 图像文件的 DPI。使用 ImageMagick 很容易:

$ convert -density 150 -units pixelsperinch file.png file.png

问题是我将从运行在多个虚拟机上的应用程序中运行此命令,这些虚拟机未安装 ImageMagick。我可以将升级包推送到这些虚拟机,但如果使用 ImageMagick,则升级包将增加约 30MB,这对于我的用例来说有点太多了。

长话短说:有没有办法可以使用小型(如包大小)命令行工具更改 PNG 文件的 DPI?

或者,如果有人知道在哪里寻找它们,更改原始图像文件中的字节也是可以的......

答案1

2.10 MB 够小吗?如果够小,请使用转换以及如下批处理命令:

nconvert -out png -dpi 150 -keepdocsize -keepfiledate mysource.png

NConvert 有什么用?

XnView 是一个基于 GUI 的应用程序,您可以使用图形用户界面更改和处理图像。NConvert 具有与 XnView 大致相同的功能,但它是一个命令行工具,没有图形用户界面。您可以在批处理脚本中使用 NConvert,也可以由其他应用程序调用它。

有用的网址

  • 新手指南维基百科通过一些例子来开始
  • 帮助文件查看可用的命令行参数(已上传至 pastebin)
  • 使用 Nconvert 的图形前端是转换. 使用这个来创建和导出 Nconvert 批处理文件
  • 论坛对于 Xnconvert 和 Nconvert

答案2

您提到您将“从您的应用程序”运行此命令,这让我相信您已经编写了此应用程序,或者正在维护它。话虽如此,ImageMagick API适用于多种语言,您可以使用其中一种语言将功能添加到现有程序中。软件包大小的增加取决于您的应用程序使用哪种语言编写,以及您是静态链接库还是动态链接库,但我认为增加的幅度应该比 30 MB 要小得多。

另一个选择是不包含整个 ImageMagick 包。您可以下载ImageMagick Zip 文件(顺便说一下,只有 13 MB),然后提取该convert工具及其依赖项并将其分发到您的 VM。有一个名为依赖性遍历器您可以使用它来确定该工具的依赖项convert

答案3

使用-size标志网络结构 程序。使用的单位是像素/米。以下示例将 newfile.png 设置为 300dpi。

pngtopnm <oldfile.png | pnmtopng -size='11811 11811 1' >newfile.png

答案4

正确的 Image Magick“转换”命令行是使用 -resample 参数:

convert image.png -resample 150x150 -units pixelsperinch ../ImagesAdjusted/image.png

相关内容