我正在寻找一种方法来更改 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,也可以由其他应用程序调用它。
有用的网址
答案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