Какая разница для образца/разрешение/масштабирование/изменение размера/адаптивно-размер/эскиз операторов в ImageMagick конвертируют?
Я нашел несколько способов изменить разрешение изображения с помощью convert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
в чем разница между ними?
Если мне нужно сделать миниатюру большого изображения различного размера с фиксированным соотношением сторон (требуется обрезка) - каков мой лучший выбор?
1 ответ:
изменение размера
-resize 400x300+20+30
(как-scale
и-sample
примеры ниже) преобразует вход в выходное изображение, которое имеет размеры пикселей400x300
. Он также сдвигает выход на 20 пикселей вправо и на 30 пикселей вниз. Кроме того, есть еще несколько отличий от-scale
:
-resize
поддерживает дополнительную настройку-filter
(что должно произойти дальше командная строка до используя-resize
!).
-filter
определяет точный алгоритм, который будет использоваться для цветов добавленных пикселей в случае увеличения, или для цветов, которые будут использоваться для оставшихся пикселей, когда некоторые из их соседей будут удалены в случае минимизации.для списка поддерживаемых фильтров просто запустите
convert -list filter
.
-filter point -resize 400x300
создает точно такой же результат как-sample 400x300
делает, но он работает немного медленнее.если не с (до)
-resize
конвертация автоматически по умолчанию-filter Lanczos
который медленнее, но который генерирует гораздо лучшее качество (потому что он учитывает цвета всех окружающих пикселей для любых новых добавленных), чем-filter point
производит (который использует ближайший сосед правила для определения цвета новый пикселы.)пример
-sample 400x300
преобразует входное изображение в выходные изображения, которые имеют размеры пикселей400x300
. Тем не менее, есть несколько очень важных различий-resize
:
-sample
не поддерживает дополнительную настройку-filter
; если установить в любом случае, то-filter
просто игнорируется.при увеличении (потому что размер входного изображения может быть меньше, чем
400x300
), пиксели реплицируются в блоки.при уменьшении (потому что размер входного изображения может быть больше, чем
400x300
), пиксели суб-выборки с очень простым алгоритмом: некоторые строки и столбцы просто пропускаются.The геометрия до
-sample
не поддерживает смещение часть (в отличие от-resize
, который уважает смещение директивы для вывода).выход никогда не будет иметь больше (разных) цветов, чем входное изображение; он может иметь меньше цветов, хотя.
-sample
очень быстро (быстрее, чем-resize
) -- но качество вывода (обычно) хуже: вы можете легко получить экстремальные блокировка и псевдоним эффекты в результате.один важная особенность
-sample
заключается в том, что новый образ не будет содержать никаких новых оттенков, хотя некоторые цвета из исходного изображения могут исчезнуть.resample
-resample
использует в качестве параметра нужныйXxY
разрешение, неXxY
пикселей геометрия целевого изображения. Целью данного оператора является сохранение элемент rendered размер изображения: предположим, что ваше изображение измеряет 4 дюйма на 3 дюйма на устройстве, которое отображает его на 300 точек на дюйм. Тогда прошу-resample 72
или-resample 72x72
изменит размер изображения так, что он измеряет (снова) 4 дюйма на 3 дюйма на устройстве 72 DPI.
эта операция работает только для таких изображений, которые уже имеют желаемое разрешение, сохраненное в их метаданных (не все форматы изображений поддерживают концепцию разрешения изображения -- JPEG, PNG и TIFF do).
если исходное изображение находится в формате, где отсутствует внутренняя поддержка разрешения изображения, то (предполагаемое) исходное разрешение изображения должно быть указано через
-density
в командной строке до указания .масштаб
-scale 400x300
дает эквивалентный результат (но быстрее, потому что он избегает всей обработки фильтра), как и с помощью-filter box -resize 400x300
. Он также полностью игнорирует любой ток-filter
настройка.
при уменьшении он изменяет размер изображения просто путем замены цветов пикселей путем усреднения соответствующих входных цветов пикселей вместе.
при увеличении он просто копирует соответствующие входные пиксели для необходимых дополнительных пикселы.
adaptive-resize
-adaptive-resize 400x300
не поддерживает (или игнорирует, если установлено)смещение часть a геометрия