我想使用命令行工具在仅 CLI的Ubuntu上裁剪图像,仅指示四个方向上要裁剪的像素。(与libreoffice中的相同)
例如:
crop image.jpg -top 5px -bottom 7px -right 14px -left 3px
有没有这样的工具(不是GUI)?
我想使用命令行工具在仅 CLI的Ubuntu上裁剪图像,仅指示四个方向上要裁剪的像素。(与libreoffice中的相同)
例如:
crop image.jpg -top 5px -bottom 7px -right 14px -left 3px
有没有这样的工具(不是GUI)?
Answers:
这是使用convert
image magick包的解决方法。
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
如上所示,输入图像为720x482px。
现在要进行裁剪,您必须确定两个因素:
现在回到上图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
command not found: convert
问题,请尝试magick
convert in.png -crop 1280x718+0+152 out.png
我明白那行的意思是:convert in.png -crop [final-right-x]x[final-right-y]+[crop-left]+[crop-top] out.png
,尽管这似乎与@Maythux的数字不匹配... FWIW!
703x470
不是713x470
?作为左右裁剪= 3+14 = 17px
,从中减去720
是703
,而不是713
。
WxH+l+t
要创建“用户友好”的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
包中使用convert命令。
要安装sudo apt-get install imagemagick
或sudo yum install ImageMagick
。
然后用于-crop geometry
裁剪图像。欲了解更多信息,请点击这里
-crop
选项给出x
和y
是偏移量和gravity
。因此您可以用它来裁剪一个正方形
该crop
命令需要4件事。要了解它,请选择要裁剪的图像。现在,想象一下在图像上,您正在绘制一个要保留的大小的矩形。此矩形外部的区域将被消除,裁剪。矩形一定不能倾斜,即顶边必须是水平的。
现在,记下这四件事:
因此,您现在有了W,H,L和T值。到目前为止,一切都很好。要知道像素,您可以在Ubuntu中安装krule工具。很有用。
现在,打开终端并转到存储图像的文件夹。使用以下命令并正确输入W,H,L和T的值:
convert input.jpg -crop WxH+L+T output.jpg