В чем разница для операторов 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 не поддерживает (или игнорирует, если установлено)смещение часть геометрия