1

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

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

我尝试了以下方法:

pnmscale -pixels 100 example.ppm > example.scaled

example.ppm有大小200 x 100 pixels并且我运行大小为 的 pnmscale 命令时,大小100 pixels应该example.scaled100 x 50 pixels. 使用我的解决方案,图像变得非常小。

4

1 回答 1

0

作为pnmscale状态的联机帮助页,该选项pixels

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

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

再次查看pnmscale 的联机帮助页会得出以下结果:

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

[...]

如果您将一个维度指定为像素大小而未指定另一个维度,则 pnmscale 会缩放未指定的维度以保留纵横比。

在你的情况下,使用

pnmscale -xsize 100 example.ppm > example.scaled

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

于 2019-06-22T09:22:36.003 回答