Справка ImageMagick - нужно изменить DPI - PullRequest
7 голосов
/ 03 июня 2010

У меня есть изображение 1000x1000 с разрешением 300 точек на дюйм, которое необходимо преобразовать в миниатюру размером 100x100 с разрешением 96 точек на дюйм. Как мне сделать это в ImageMagick? Я стремлюсь к наименьшему возможному размеру файла при максимально возможном качестве.

Делать что-то вроде этого:

convert myimage.png -quality 100 -resize 100 PNG8:mynewimage.png

.... меняет размер, но поддерживает DPI. Если я смогу изменить это значение на 96dpi, я должен получить файл меньшего размера.

Я пробовал -density и т. Д., Но не могу заставить их работать на меня. Возможно, я поставил команды в неправильном порядке или передал неправильные параметры. Любая помощь очень ценится. Спасибо.

1 Ответ

5 голосов
/ 03 июня 2010

Короткая версия: если вы хотите изображение размером 100x100 в формате PNG, у вашей линии уже будет наилучшее качество при наименьшем размере файла. Вы не можете сделать ничего лучше, чем это без a) кодирования в формате с потерями (JPEG) или b) уменьшения глубины цвета вашего изображения.

Для более длинного объяснения, прямо из Википедии: «Точек на дюйм (DPI) - это мера пространственной печати или плотности видеоточек, в частности количества отдельных точек, которые можно поместить в линию в пределах диапазона 1 дюймов (2,54 см). Значение DPI имеет тенденцию коррелировать с разрешением изображения, но связано только косвенно . "

DPI не имеет ничего общего с получением меньшего размера файла; Ваше изображение 100x100 имеет размеры 100x100 пикселей , независимо от того, видите ли вы его на экране с разрешением 300 точек на дюйм или с разрешением 96 точек на дюйм (на экране с разрешением 300 точек на дюйм оно будет выглядеть меньше). Количество информации одинаково в любом случае.

«- плотность» также не поможет, поскольку она работает только при «кодировании растрового изображения при рендеринге (чтении) векторных форматов, таких как Postscript, PDF, WMF и SVG, в растровое изображение». Эти форматы не зависят от разрешения, поэтому имеет смысл сообщить ImageMagick значение DPI, в которое вы хотите растеризовать изображение. Однако ваш DPI должен быть функцией устройства вывода, которое вы планируете использовать. В вашем случае, поскольку вы начинаете с уже растрированного изображения, это бесполезно.

PNG - это формат без потерь, поэтому параметр -quality контролирует только уровень сжатия zlib; любое увеличение размера изображения будет минимальным, но его стоит использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...