仅使用命令行工具裁剪图像

May*_*hux 54 command-line image-processing

我想使用命令行工具裁剪图像,指示四个方向的裁剪像素(与我们在 LibreOffice 中裁剪的方式相同)

例如:

crop image.jpg -top 5px -bottom 7px -right 14px -left 3px
Run Code Online (Sandbox Code Playgroud)

有没有这样的工具(不是 GUI)?

May*_*hux 57

这是使用convertfrom image magick pack的解决方法。

sudo apt-get install imagemagick
Run Code Online (Sandbox Code Playgroud)

为一张图片 image.jpg

$ identify image.jpg 

image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009
Run Code Online (Sandbox Code Playgroud)

如上图,输入图像为 720x482px。

现在要进行裁剪,您必须确定两个因素:

  1. 裁剪起点(包括2个方向)
  2. 裁剪后的矩形大小(在这里您可以包括其他方向)

现在回到image.jpg上面的图片,我想裁剪:

  • 顶部 5px
  • 底部 7px
  • 右 14px
  • 左 3px

那么你可以用(widthx height+ left+ top/ wx h+ l+t格式)来做到这一点:

convert image.jpg -crop 703x470+3+5 output.jpg
Run Code Online (Sandbox Code Playgroud)

现在

$ identify output.jpg 

output.jpg JPEG 703x470 703x470+0+0 8-bit DirectClass 102KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)

  • 不应该是`703x470`而不是`713x470`吗?由于左+右裁剪`= 3+14 = 17px`,从`720`中减去时是`703`,而不是`713`。 (3认同)
  • 据说 Imagemagick 7 使用“magick”命令代替“convert”。如果有人遇到 `command not found: convert` 问题,请尝试 `magick` (2认同)

Mar*_*oma 22

如果你想修剪掉白色区域,imagemagick有一个特殊的命令:

convert -trim input.jpg output.jpg
Run Code Online (Sandbox Code Playgroud)

  • 这相当于 gimp 中的裁剪到内容!在 png 上效果很好! (2认同)

Jac*_*ijm 11

要创建“用户友好”cli- 选项,可以使用以下脚本。只需运行以下命令:

<script> <image> <crop_left> <crop_right> <crop_top> <crop_bottom>
Run Code Online (Sandbox Code Playgroud)

它创建了一个裁剪图像image.jpegimage[cropped].jpeg在同一目录中命名。

剧本

<script> <image> <crop_left> <crop_right> <crop_top> <crop_bottom>
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 该脚本使用 imagemagick

    sudo apt-get install imagemagick
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将上面的脚本另存为crop_image(无扩展名)在~/bin.

  3. 如有必要,创建目录。在这种情况下,还要运行source ~/.profile以使目录显示在$PATH.
  4. 使脚本可执行。

现在只需按其名称运行脚本,如上所述,例如:

crop_image /path/to/image.jpg 20 30 40 50
Run Code Online (Sandbox Code Playgroud)

空格没问题,只要在这种情况下使用引号:

crop_image '/path/with spaces in the name/to/image.jpg' 20 30 40 50
Run Code Online (Sandbox Code Playgroud)


小智 5

使用mogrify -crop <W>x<H>+<X>+<Y> <files>

小心:文件会被覆盖,恕不另行通知。如果需要,添加-path指定输出目录的选项以防止出现这种情况。

例如:mogrify -crop 256x256+10+5 images/*.jpg将文件夹中的每个图像裁剪images为 256x256 图像,从顶部开始 10 个像素,从侧面开始 5 个像素。它将覆盖旧图像。

如果Argument list too long由于尝试一次转换多个图像而出现错误,只需将图像路径用单引号引起来,以防止 bash 扩展它:mogrify -crop 256x256+10+5 'images/*.jpg'(mogrify 将自行扩展)


小智 5

crop命令需要 4 件事。要了解它,请使用您要裁剪的图像。现在,想象一下在图像上,您正在绘制一个您想要保留的大小的矩形。该矩形之外的区域将被消除、裁剪。矩形不得倾斜,即顶部必须水平。

现在,记下这 4 件事:

  1. 矩形的像素宽度 (W)
  2. 矩形的高度 (H)
  3. 矩形左侧垂直边距图像左边距/末端 (L) 的距离
  4. 矩形顶边距图像上边距/末端的距离 (T)。

因此,您现在拥有 W、H、L 和 T 值。到现在为止还挺好。要了解像素,您可以在 Ubuntu 中安装krule工具。很有用。

现在,打开终端并转到存储图像的文件夹。使用以下命令并正确放置 W、H、L 和 T 的值:

convert input.jpg -crop WxH+L+T output.jpg
Run Code Online (Sandbox Code Playgroud)


小智 3

您可以使用image magick包中的转换命令。
要安装sudo apt-get install imagemagicksudo yum install ImageMagick.
然后使用-crop geometry裁剪图像。欲了解更多读物,请阅读此处