Какая разница для образца/разрешение/масштабирование/изменение размера/адаптивно-размер/эскиз операторов в ImageMagick конвертируют?


Я нашел несколько способов изменить разрешение изображения с помощью convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

в чем разница между ними?

Если мне нужно сделать миниатюру большого изображения различного размера с фиксированным соотношением сторон (требуется обрезка) - каков мой лучший выбор?

1 78

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 геометрия