【问题标题】:How to use pnmscale to scale the longer side of an image and still keep the ratio?如何使用 pnmscale 缩放图像的较长边并保持比例?
【发布时间】:2019-06-22 08:29:21
【问题描述】:

我正在编写一个 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。使用我的解决方案,图像变得非常小。

【问题讨论】:

    标签: unix gnu-make netpbm


    【解决方案1】:

    正如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 像素的宽度。

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多