В чем разница для операторов sample/resample/scale/resize/adaptive-resize/thumbnail в ImageMagick convert?
Я нашел несколько способов изменить разрешение изображения с помощью 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
), пикселей выборка с очень простой алгоритм: некоторые строки и столбцы просто пропустил.на геометрия до
-sample
не поддерживает смещение часть (в отличие от-resize
, который уважает смещение директивы для вывода).выход никогда не будет иметь больше (разных) цветов, чем у входного изображения; он может иметь меньше цветов.
-
-sample
очень быстро (быстрее, чем-resize
) -- но качество выхода (обычно) хуже: вы можете легко получить extreme блокировка и псевдоним эффекты в результате. один важная особенность
-sample
заключается в том, что новое изображение не будет содержать новых цветов, хотя некоторые цвета из исходного изображения могут исчезнуть.
resample
-resample
использует в качестве параметра нужныйXxY
разрешение, неXxY
пикселей геометрия целевого изображения. Целью данного оператора является сохранение the вынесено размер изображения: предположим, что ваше изображение измеряет 4 дюйма на 3 дюйма на устройстве, которое отображает его на 300 DPI. Тогда прошу-resample 72
или-resample 72x72
изменит размер изображения, чтобы он измерял (снова) 4 дюйма на 3 дюйма на устройстве с разрешением 72 DPI.
эта операция работает только для таких изображений, которые уже имеют желаемое разрешение, хранящееся в их метаданных (не все форматы изображений поддерживают концепцию разрешения изображения -- JPEG, PNG и TIFF do).
если исходное изображение находится в формате, где отсутствует внутренняя поддержка разрешения изображения, то (предполагаемое) исходное разрешение изображения должно быть указано через
-density
в командной строке до указания .
масштаб
-scale 400x300
производит эквивалентный результат (но быстрее, потому что он избегает всей обработки фильтра), как и использование-filter box -resize 400x300
. Он также полностью игнорирует любой ток-filter
настройка.
при уменьшении он изменяет размер изображения, просто заменяя цвета пикселей путем усреднения соответствующих входных цветов пикселей вместе.
при увеличении он просто реплицирует соответствующие входные пиксели для требуемых дополнительных пикселы.
адаптивное изменение размера
-adaptive-resize 400x300
не поддерживает (или игнорирует, если установлено)смещение часть геометрия