linux - 使用 imagemagick linux 脚本裁剪图像不起作用

标签 linux command imagemagick crop

这是我在这里的第一篇文章,因为我已经绝望了。 我需要编写一个脚本来调整图像大小,然后根据用户输入的内容从边缘切掉 X 数量的像素。

我的调整大小工作得很好,但我在切碎/裁剪方面遇到了重大问题。

我删除了所有变量以查看是否可以找到问题所在,但我做不到,我已经尝试了 2 个小时让它工作,但我就是做不到

如有任何帮助,我们将不胜感激。

  1 #!/bin/bash
  2 
  3 percentage=50%
  4 
  5 for i in *.jpg; do
  6         printf "Resize $i\n"
  7         convert "$i" -resize $percentage "output_$i"
  8 done
 14 
 15 for j in *.jpg; do
 16         printf "Crop $j\n"
 17         convert $j -gravity North -chop  0x10 tempimagechop.png 
 18         convert tempimagechop.png -gravity South -chop 0x10 tempimagechop.png
 19         convert tempimagechop.png -gravity East -chop 0x10 tempimagechop.png
 20         convert tempimagechop.png -gravity West -chop  0x10 "Chop_$j"
 21         
 22 done      

最佳答案

在Imagemagick 中,chop 和crop 是完全不同的。 -chop 将删除图像的一部分,留下其余部分。 -crop 将裁剪并保存图像的一部分。你做的是砍而不是庄稼。要进行裁剪,请使用 -crop WxH+X+Y +repage。其中+X+Y是你要保留的WxH部分的左上角,即你要保留的区域左上角的偏移量。参见 http://www.imagemagick.org/Usage/crop/#chophttp://www.imagemagick.org/Usage/crop/#crop_repagehttp://www.imagemagick.org/Usage/crop/#crop_gravity

你的 chop 命令是错误的。要在顶部(北)切碎,请使用 -chop 0x10。要在左侧(西)切碎,请使用 -chop 10x0。要在右边(东)砍,使用-chop 10x0。要在底部(南)切碎,请使用 -chop 0x10。第一个数字是要切碎的列,第二个数字是要切碎的行。您也不需要使用单独的转换程序。您可以将它们一个接一个地串成一个转换。您还应该在之后添加 +repage 。请参阅上面的 -chop 链接。

但您最好使用如上所述的 one-crop,方法是在 +X+Y 处指定 WxH 和左上角

关于linux - 使用 imagemagick linux 脚本裁剪图像不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48015418/

相关文章:

image-processing - 使用 ImageMagick 压缩 JPG 文件的建议

ruby-on-rails - 回形针 imagemagick 转换为灰度并裁剪以适合 144x144#

linux - Ubuntu 上的 Qt sqlcipher

java - 无法写入 pty - linux

java - 来自java程序的命令

python - 学习 float 长度

node.js - 使用单个图像读取/流进行多个调整大小

c++ - 搜索继承另一个类的 C++ 类

linux - 亚马逊 ec2 上的 NRPE 远程主机设置

mysql - ubuntu命令行上的SQL错误