如何使用pnmscale缩放图像的较长边并仍保持比例?

时间:2019-06-22 08:29:21

标签: unix gnu-make netpbm

我正在编写一个GNU Makefile对图像进行一些处理。 一个任务是使用pnmscale命令通过SIZE参数缩放图像(.ppm格式)。图像应在不减小比例的情况下从较长的一侧缩放,并应保存为.scaled。

我已经阅读了pnmscale的手册页,但似乎找不到正确的选项。

我尝试了以下操作:

pnmscale -pixels 100 example.ppm > example.scaled

example.ppm的大小为200 x 100 pixels且我以100 pixels的大小运行pnmscale命令时,example.scaled的大小应为100 x 50 pixels。通过我的解决方案,图像变得很小。

1 个答案:

答案 0 :(得分:0)

manpage of pnmscale所述,选项pixels

  

指定最大输出像素总数。 pnmscale将图像缩小到该像素数。如果输入图像已经不超过这么多像素,则pnmscale只是将其复制为输出; pnmscale不能与-pixels一起放大。

换句话说,通过指定-pixels 100,实际上是在将图像缩小到最大100个像素。您要实现的目标是将输入图像缩小到100 x 50 pixels = 5000 pixels的大小。

再次查看manpage of pnmscale会得到以下结果:

pnmscale [{-xsize=cols | -width=cols | -xscale=factor}] [{-ysize=rows | -height=rows | -yscale=factor}] [pnmfile]
     

[...]

     

如果您将一个尺寸指定为像素尺寸,而未指定另一个尺寸,则pnmscale会缩放未指定的尺寸以保留宽高比。

在您的情况下,使用

pnmscale -xsize 100 example.ppm > example.scaled

应将输入图像缩小到100像素的宽度。