Как использовать pnmscale, чтобы масштабировать длинную сторону изображения и при этом сохранять соотношение?
Я пишу GNU Makefile для некоторой обработки изображений. Одной из задач является масштабирование изображения (формат.ppm) с помощью параметра SIZE с помощью команды pnmscale. Изображение должно быть масштабировано более длинной стороной без потери соотношения и должно быть сохранено в.scaled.
Я прочитал справочную страницу pnmscale, но не могу найти правильный вариант.
Я пробовал следующее:
pnmscale -pixels 100 example.ppm > example.scaled
когда example.ppm
имеет размер 200 x 100 pixels
и я запускаю команду pnmscale с размером 100 pixels
, example.scaled
должен иметь размер 100 x 50 pixels
, С моим решением изображение становится очень маленьким.
1 ответ
Как говорится на man-странице 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 пикселей.