Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在Imagemagick中使用循环剪裁图像_Linux_Image_Bash_Ubuntu_Imagemagick - Fatal编程技术网

Linux 在Imagemagick中使用循环剪裁图像

Linux 在Imagemagick中使用循环剪裁图像,linux,image,bash,ubuntu,imagemagick,Linux,Image,Bash,Ubuntu,Imagemagick,我正在尝试在文件夹中批量裁剪图像。每当我试着做这个循环 for image in '/home/donald/Desktop/Im'*.jpg; do convert "$image" -gravity center -crop 95X95% "${image%.jpg}"-modified.jpg done 我最后得到了一个错误: convert.im6: unable to open image `/home/donald/Desktop/Im*.jpg': No such f

我正在尝试在文件夹中批量裁剪图像。每当我试着做这个循环

for image in '/home/donald/Desktop/Im'*.jpg; do 
    convert "$image" -gravity center -crop 95X95% "${image%.jpg}"-modified.jpg
done 
我最后得到了一个错误:

convert.im6: unable to open image `/home/donald/Desktop/Im*.jpg': No such file or directory @ error/blob.c/OpenBlob/2638.
convert.im6: no images defined `/home/donald/Desktop/Im*-modified.jpg' @ error/convert.c/ConvertImageCommand/3044.
这很奇怪,因为文件夹中肯定有图像,根据元数据,它们是jpg

当我运行
shopt | grep glob
时,我得到以下输出:

dotglob         off
extglob         on
failglob        off
globstar        off
globasciiranges off
nocaseglob      off
nullglob        off
以下是我的版本信息:

GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Echo$-输出

himBH

在for语句的开头,这些是引号还是反引号? 你必须使用反引号

试试这个:

for image in `ls -1 /home/donald/Desktop/Im*.jpg`; do 
    convert "$image" -gravity center -crop 95X95% "${image%.*}"-modified.jpg ;
done 

在for语句的开头,这些是引号还是反引号? 你必须使用反引号

试试这个:

for image in `ls -1 /home/donald/Desktop/Im*.jpg`; do 
    convert "$image" -gravity center -crop 95X95% "${image%.*}"-modified.jpg ;
done 
正确的语法是:

#!/bin/bash
shopt -s nullglob
for image in $HOME/Desktop/Im*.jpg; do
   convert "$image" ...
done
另一个选项是使用ImageMagick套件中的
mogrify
命令:

# Create an output directory for cropped images
mkdir cropped
# Crop image and direct output to sub-directory
mogrify -gravity center -crop 95x95% -path cropped  *.jpg
您绝对不应该解析
ls

的输出。正确的语法是:

#!/bin/bash
shopt -s nullglob
for image in $HOME/Desktop/Im*.jpg; do
   convert "$image" ...
done
另一个选项是使用ImageMagick套件中的
mogrify
命令:

# Create an output directory for cropped images
mkdir cropped
# Crop image and direct output to sub-directory
mogrify -gravity center -crop 95x95% -path cropped  *.jpg

您绝对不应该解析
ls

的输出。请将
shopt | grep glob
和bash版本的输出添加到您的问题中。完成。我的命令语法是否错误,或者这是我的操作系统设置或imagemagick安装的问题?请也添加
echo$-
的输出。请将
shopt | grep glob
和bash版本的输出添加到问题中。完成。是我的命令语法错误,还是我的操作系统设置或imagemagick安装有问题?请添加
echo$-
的输出。