Я нашел несколько способов изменить разрешение изображения, используя convert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
В чем разница?
Если мне нужно сделать миниатюру большого изображения разного размера с фиксированным соотношением сторон (требуется обрезка) - какой мой лучший выбор?
imagemagick
thumbnails
стандартное восточное время
источник
источник
Ответы:
изменить размер
-resize
поддерживает дополнительную настройку-filter
(которая должна появиться в командной строке перед использованием-resize
!).-filter
определяет точный алгоритм, который будет использоваться для цветов добавленных пикселей в случае увеличения или для цветов, которые будут использоваться для оставшихся пикселей, когда некоторые из их соседей будут удалены в случае минификации.Чтобы получить список поддерживаемых фильтров, просто запустите
convert -list filter
.-filter point -resize 400x300
дает точно такой же результат-sample 400x300
, но работает еще немного медленнее.Если не задано рядом (раньше)
-resize
, преобразование по умолчанию будет выполняться-filter Lanczos
медленнее, но при этом будет получено гораздо лучшее качество (поскольку учитываются цвета всех окружающих пикселей для любых вновь добавленных), чем при преобразовании-filter point
(при котором используются ближайшие правило соседа для определения цвета вновь добавленных пикселей).образец
-sample
не поддерживает дополнительную настройку-filter
; если все равно установлено, то-filter
просто игнорируется.При увеличении (поскольку размер входного изображения может быть меньше
400x300
) пиксели реплицируются блоками.При минимизации (поскольку размер входного изображения может быть больше
400x300
) пиксели подвергаются субдискретизации с помощью очень простого алгоритма: некоторые строки и столбцы просто пропускаются.Геометрии аргумент
-sample
не поддерживает ни одного смещение части ( в отличие от-resize
, который уважает смещения директивы для выхода).На выходе никогда не будет больше (разных) цветов, чем было на входном изображении; хотя у него может быть меньше цветов.
Следовательно,
-sample
это очень быстро (быстрее, чем-resize
), но качество вывода (обычно) хуже: вы можете легко получить экстремальные эффекты блокировки и сглаживания в конечном результате.Одной из важных особенностей
-sample
является то, что новое изображение не будет содержать новых цветов, хотя некоторые цвета из исходного изображения могут исчезнуть.повторная выборка
Эта операция работает только для таких изображений, у которых уже есть желаемое разрешение, сохраненное в их метаданных (не все форматы изображений поддерживают концепцию разрешения изображения - JPEG, PNG и TIFF поддерживают).
Если исходное изображение находится в формате, в котором отсутствует внутренняя поддержка разрешения изображения, то (предполагаемое) исходное разрешение изображения должно быть указано
-density
в командной строке до указания-resample
разрешения.шкала
При минимизации он изменяет размер изображения, просто заменяя цвета пикселей путем усреднения соответствующих цветов входных пикселей вместе.
При увеличении он просто копирует соответствующие входные пиксели для требуемых дополнительных пикселей.
адаптивное изменение размера
-filter [something]
).миниатюра
Оптимизирован по скорости.
Он также удаляет все встроенные цветовые профили, чтобы уменьшить размер файла миниатюр.
В следующем ответе показано несколько (иллюстрированных!) Примеров
-resize
директивы. На каждой иллюстрации показан разный результат в зависимости от «мелких деталей» точного метода изменения размера:источник
Как сказал Чиро Сантилли 新疆 改造 中心 六四 事件 法轮功:
-размер
(8.0 КБ)
-образец
(2.2кБ)
-шкала
(7.0 кБ)
-адаптивное изменение размера
(4.3 КБ)
источник