В чем разница между операторами sample / resample / scale / resize / adaptive-resize / thumbnail в ImageMagick convert?

87

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

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

В чем разница?

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

стандартное восточное время
источник
Для еще большей информации см imagemagick.org/Usage/filter и imagemagick.org/Usage/filter/nicolas
fmw42

Ответы:

140

изменить размер

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

  • Одной из важных особенностей -sampleявляется то, что новое изображение не будет содержать новых цветов, хотя некоторые цвета из исходного изображения могут исчезнуть.

повторная выборка

-resampleиспользует в качестве параметра желаемое XxY разрешение , а не XxYпиксельную геометрию целевого изображения. Цель этого оператора - сохранить визуализированный размер изображения: предположим, что ваше изображение имеет размер 4 на 3 дюйма на устройстве, которое отображает его с разрешением 300 точек на дюйм. Затем при запросе -resample 72или -resample 72x72изменит размер изображения так, чтобы его размер (снова) составлял 4 на 3 дюйма на устройстве с 72 DPI.

  • Эта операция работает только для таких изображений, у которых уже есть желаемое разрешение, сохраненное в их метаданных (не все форматы изображений поддерживают концепцию разрешения изображения - JPEG, PNG и TIFF поддерживают).

  • Если исходное изображение находится в формате, в котором отсутствует внутренняя поддержка разрешения изображения, то (предполагаемое) исходное разрешение изображения должно быть указано -densityв командной строке до указания -resampleразрешения.

шкала

-scale 400x300дает эквивалентный результат (но быстрее, поскольку позволяет избежать обработки фильтром), как и при использовании -filter box -resize 400x300. Он также полностью игнорирует любые текущие -filterнастройки.

  • При минимизации он изменяет размер изображения, просто заменяя цвета пикселей путем усреднения соответствующих цветов входных пикселей вместе.

  • При увеличении он просто копирует соответствующие входные пиксели для требуемых дополнительных пикселей.

адаптивное изменение размера

-adaptive-resize 400x300не поддерживает (или игнорирует, если задано) смещенную часть параметра геометрии, а также игнорирует -gravityнастройку, если она есть.

  • При изменении размера по умолчанию используется триангуляция, зависящая от данных (если только метод изменения размера не переопределен дополнительным указанием -filter [something]).

миниатюра

-thumbnailработает точно так -resizeже, с некоторыми отличиями:

  • Оптимизирован по скорости.

  • Он также удаляет все встроенные цветовые профили, чтобы уменьшить размер файла миниатюр.


В следующем ответе показано несколько (иллюстрированных!) Примеров -resizeдирективы. На каждой иллюстрации показан разный результат в зависимости от «мелких деталей» точного метода изменения размера:

Курт Пфайфле
источник
4
Спасибо, в этом гораздо больше смысла, чем в документации ImageMagick.
Пол Браннан
Если бы у вас были образцы изображений, это было бы еще лучше :-)
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
@KurtPfeifle: Прежде всего, спасибо за очень информативный ответ. Не могли бы вы предложить какую-нибудь хорошую книгу или pdf-файл документации для Imagemagick. Лучший подход, который у меня сейчас есть, - очистить все страницы Imagemagick, чтобы сократить время чтения, но это большой объем информации (который, на мой взгляд, не всегда достаточно описательный). Любая помощь высоко ценится.
saurabheights
7

Как сказал Чиро Сантилли 新疆 改造 中心 六四 事件 法轮功:

Если бы у вас были образцы изображений, это было бы еще лучше :-)

-размер

Google play с -resize (8.0 КБ)

-образец

-образец (2.2кБ)

-шкала

-шкала (7.0 кБ)

-адаптивное изменение размера

введите описание изображения здесь (4.3 КБ)

serv-inc
источник