Короткая версия: если вы хотите изображение размером 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; любое увеличение размера изображения будет минимальным, но его стоит использовать.