Как обрезать изображение с помощью ImageMagick из командной строки?

Вопрос или проблема

Я пытаюсь обрезать изображение размером 640×640 с помощью ImageMagick в командной строке.

Мне нужно удалить около 20 пикселей с нижней части изображения от левого края до правого. Длинная полоска по нижнему краю.

Я знаю о команде shave.

Какую команду нужно ввести в командную строку? Я использую версию этой программы для Windows.

Предполагая, что вы всегда знаете размер вашего изображения, вы можете сделать это так:

convert original.jpg -crop 640x620+0+0 cropped.jpg

С помощью оператора -crop вы указываете размер вырезанного изображения и смещение от верхнего левого угла старого изображения.

Чтобы избавиться от 20 пикселей в нижней части, вам нужно выбрать размер 640x620 и смещение 0+0.

Используйте оператор -chop в ImageMagick следующим образом, чтобы удалить 20 строк пикселей снизу:

convert image.png -gravity South -chop 0x20 result.png

Измените на -gravity North, чтобы срезать верхние 20 строк.


Измените на:

convert image.png -gravity East -chop 20x0 result.png

Чтобы обрезать с правой стороны, обратите внимание, что 20 пикселей теперь перед разделителем x.

На самом деле, мне потребовалось время, чтобы правильно это сделать, поэтому я подумал, что стоит опубликовать это здесь.

"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert -crop 100x100+800+600 fileIn.png fileOut.png

Таким образом, нужно использовать и “magick”, и “convert” без “-” и затем опции с “-“. История этого странного вызова заключается в том, что convert раньше был исполняемым файлом (единственным исполняемым файлом является magick). Однако так как была еще одна системная программа Windows с тем же именем “convert”, теперь это передается как аргумент каким-то образом. Более того, нужно, чтобы папка была в пути.

Простой пакет для упрощения вызова может быть:

crop fileIn.png fileOut.png 100,100,800,600

где код будет

crop.bat

set fname1=%1
set fname2=%2
set x0=%3
set y0=%4
set w=%5
set h=%6
"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert -crop %w%x%h%+%x0%+%y0% %fname1% %fname2%

Вам нужен параметр -crop, но этого недостаточно, так как в таких форматах изображений, как PNG, изображение может иметь виртуальное полотно, и вам, как правило, не нужно такое виртуальное полотно в выходном изображении. Таким образом, в случае сомнений вам следует использовать +repage перед обрезкой, чтобы удалить информацию о смещении виртуального полотна, возможно, присутствующую в входном изображении, и вы всегда должны использовать +repage после обрезки, чтобы удалить такую информацию (сгенерированную crop, в частности), то есть предполагать, что вход может быть грязным и обеспечить, чтобы выход был чистым. Это дает:

convert in.png +repage -crop <Width>x<Height>+OffsetX+OffsetY +repage out.png

А в вашем случае:

convert in.png +repage -crop 640x620+0+0 +repage out.png

В конце -crop документации ImageMagick:

Может быть необходимо +repage изображение перед обрезкой, чтобы убедиться, что рамка координат обрезки перенесена в верхний левый угол видимого изображения. Аналогично, возможно, вам потребуется использовать +repage после обрезки, чтобы удалить смещение страницы, которое останется. Это особенно верно, когда вы собираетесь записать в такой формат изображения, как PNG, который поддерживает смещение изображения.

Если вы используете -crop при наличии виртуального полотна, вы можете получить неверный результат, возможно, с предупреждением типа “геометрия не содержит изображения”.

Обрезка по центру в пакетном режиме

for f in *.jpg; do convert "$f" -gravity center -crop 98x98+0+0 +repage "$f" ; done

Выполнять с -extent в полотне -background white

for f in *.jpg; do convert "$f" -gravity center -crop 98x98+0+0 +repage -extent 98x98 -background white "$f" ; done

Ответ или решение

Как обрезать изображение с помощью ImageMagick из командной строки

ImageMagick — это мощный инструмент для обработки изображений, который предоставляет множество возможностей для редактирования. В этом руководстве мы рассмотрим, как обрезать изображение размером 640×640 пикселей с помощью командной строки, удалив 20 пикселей с нижней части изображения, используя разные подходы.

Подготовка к работе

Прежде всего, убедитесь, что вы установили ImageMagick на свой компьютер под управлением Windows. Установщик позволяет выбрать путь, содержащий исполняемые файлы, для упрощения запуска команд. Обычно путь к исполняемому файлу выглядит как C:\Program Files\ImageMagick-7.0.10-Q8\magick. Вы можете добавить его в системную переменную PATH, чтобы запускать его из любой директории.

1. Использование команды -crop

Команда -crop позволяет вырезать часть изображения на основе указанных параметров: ширины, высоты и смещения. Для удаления 20 пикселей снизу, мы можем использовать следующую команду:

"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert input.jpg -crop 640x620+0+0 +repage output.jpg

Объяснение команды:

  • input.jpg — входное изображение, которое вам нужно обрезать.
  • -crop 640x620+0+0 — задает ширину и высоту нового изображения (640×620 пикселей), начиная с верхнего левого угла (0, 0).
  • +repage — удаляет информацию о виртуальном холсте, что может быть полезно для некоторых форматов изображений, таких как PNG.
  • output.jpg — имя выходного файла, который будет создан.

2. Использование команды -chop

Альтернативно, вы можете использовать команду -chop, чтобы удалить определённое количество пикселей с краев изображения. Для удаления 20 пикселей снизу используйте:

"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert input.jpg -gravity South -chop 0x20 output.jpg

Объяснение команды:

  • -gravity South — устанавливает направление удаления пикселей на юг, то есть снизу.
  • -chop 0x20 — удаляет 20 пикселей по вертикали (высота) и не изменяет ширину (горизонтально).

3. Создание группы команд для упрощения работы

Если вы часто обрабатываете изображенияsimilarного размера, целесообразно создать пакетный файл для автоматизации процесса. Пример кода для crop.bat:

@echo off
set fname1=%1
set fname2=%2
set w=640
set h=620
"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert "%fname1%" -crop %w%x%h%+0+0 +repage "%fname2%"

Использование:
Вы можете запускать его с командной строки, указывая входное и выходное изображения:

crop.bat fileIn.jpg fileOut.jpg

4. Учитывайте виртуальный холст

При работе с изображениями помните, что некоторые форматы, такие как PNG, могут содержать виртуальный холст. Использование +repage перед и после операций обрезки гарантирует, что вы получите чистый выход без ненужных метаданных:

"C:\Program Files\ImageMagick-7.0.10-Q8\magick" convert input.png +repage -crop 640x620+0+0 +repage output.png

Заключение

ImageMagick предоставляет множество возможностей для обработки изображений через командную строку. Обрезка изображений с помощью команд -crop и -chop позволяет легко удалять ненужные области. Создание пакетных файлов делает процесс ещё более удобным и ускоряет обработку групповых изображений. Не забывайте использовать +repage, чтобы избежать проблем с виртуальными холстами. Попробуйте эти команды на своих изображениях и наслаждайтесь результатами!

Оцените материал
Добавить комментарий

Капча загружается...