изменить размер
-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
директивы. На каждой иллюстрации показан разный результат в зависимости от «мелких деталей» точного метода изменения размера: