Вопрос или проблема
Я пытаюсь обрезать изображение размером 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
, чтобы избежать проблем с виртуальными холстами. Попробуйте эти команды на своих изображениях и наслаждайтесь результатами!