Я хочу обрезать изображение только на моем CLI Ubuntu, используя только инструмент командной строки , указывающий пиксели для обрезки по четырем направлениям. (то же самое, что и в libreoffice)
Например:
crop image.jpg -top 5px -bottom 7px -right 14px -left 3px
Есть ли такой инструмент (не GUI)?
Вот обходное решение с помощью convert
от пакета волшебства изображения.
sudo apt-get install imagemagick
Для изображения image.jpg
$ identify image.jpg
image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009
Как показано выше, входное изображение составляет 720x482 пкс.
Теперь, чтобы сделать обрезку Вас должны определить два фактора:
Теперь назад к изображению image.jpg
выше, я хочу обрезать:
тогда, Вы могли сделать это с (width
x height
+ left
+ top
/ w
x h
+ l
+ t
формат):
convert image.jpg -crop 703x470+3+5 output.jpg
Теперь
$ identify output.jpg
output.jpg JPEG 703x470 703x470+0+0 8-bit DirectClass 102KB 0.000u 0:00.000
Для создания "удобной для пользователя" cli-опции сценарий ниже может использоваться. Просто выполните команду:
<script> <image> <crop_left> <crop_right> <crop_top> <crop_bottom>
Это создает кадрированное изображение image.jpeg
, именованный image[cropped].jpeg
в том же каталоге.
#!/usr/bin/env python3
import subprocess
import sys
# image, crop- dimensions
img = sys.argv[1]; left = sys.argv[2]; right = sys.argv[3]; top = sys.argv[4]; bottom = sys.argv[5]
# arrange the output file's name and path
img_base = img[:img.rfind(".")]; extension = img[img.rfind("."):]; path = img[:img.rfind("/")]
img_out = img_base+"[cropped]"+extension
# get the current img' size
data = subprocess.check_output(["identify", img]).decode("utf-8").strip().replace(img, "")
size = [int(n) for n in data.replace(img, "").split()[1].split("x")]
# calculate the command to resize
w = str(size[0]-int(left)-int(right)); h = str(size[1]-int(top)-int(bottom)); x = left; y = top
# execute the command
cmd = ["convert", img, "-crop", w+"x"+h+"+"+x+"+"+y, "+repage", img_out]
subprocess.Popen(cmd)
Использование сценария imagemagick
sudo apt-get install imagemagick
Сохраните сценарий выше как crop_image
(никакое расширение) в ~/bin
.
source ~/.profile
составлять шоу каталога в $PATH
.Теперь просто запустите скрипт его именем, как упомянуто, например:
crop_image /path/to/image.jpg 20 30 40 50
Пробелы не являются никакой проблемой, пока в этом случае, Вы используете кавычки:
crop_image '/path/with spaces in the name/to/image.jpg' 20 30 40 50
Можно использовать, преобразовывают команду в image magick
пакет.
Для установки sudo apt-get install imagemagick
или sudo yum install ImageMagick
.
Тогда использование -crop geometry
для обрезки изображения. Поскольку больше чтений читает здесь
Если Вы хотите отрезать белые регионы, imagemagick
имеет специальную команду для него:
convert -trim input.jpg output.jpg
crop
для команды нужны 4 вещи. Для понимания это берет изображение, которое Вы хотите обрезать. Теперь, предположите на изображении, рисование прямоугольника размера, который Вы хотите сохранить. Область вне этого прямоугольника будет устранена, обрезана. Прямоугольник не должен быть наклонен, т.е. главная сторона должна быть горизонтальной.
Теперь, запишите эти 4 вещи:
Таким образом Вы имеете теперь W, H, L и значения T.Пока все хорошо. Для знания пикселей можно установить инструмент krule в Ubuntu. Очень полезный.
Теперь, откройте терминал и перейдите к папке, где изображение хранится. Используйте следующую команду и поместите значения W, H, L и T правильно:
convert input.jpg -crop WxH+L+T output.jpg
Используйте mogrify -crop <W>x<H>+<X>+<Y> <files>
.
Осторожный: файлы перезаписываются без уведомления.