Ответ 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
), но качество вывода (обычно) хуже: вы можете легко получить экстремальный blocking и aliasing в результирующем выходе. -
Одна из важных особенностей
-sample
заключается в том, что новое изображение не будет содержать никаких новых цветов, хотя некоторые цвета исходного изображения могут исчезнуть.
resample
-resample
использует в качестве параметра желаемоеXxY
разрешение, а неXxY
пиксель геометрия целевого изображения. Целью этого оператора является сохранение отображаемого размера изображения: предположим, что ваше изображение измеряет 4 дюйма на 3 дюйма на устройстве, которое отображает его при 300 DPI. Затем запрос на-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
-thumbnail
работает так же, как-resize
, имеет несколько отличий:
-
Он оптимизирован для скорости.
-
Он также удаляет любые встроенные цветовые профили, чтобы уменьшить размер файлов эскизов.
Следующий ответ показывает несколько (иллюстрированных!) примеров директивы -resize
. На каждой иллюстрации показан другой результат, в зависимости от "мелких деталей" точного метода изменения размера: