图像在ubuntu中的shell脚本中调整大小

时间:2012-06-14 10:29:03

标签: shell ubuntu

我有两张照片。我创建了一个.sh文件来操纵它。首先,我使用for循环..

我的导演结构: -

测试   图片      DOC      新图片      angelimage      test.sh      5elements10.png      boltonclinics5.png

现在我希望2个图像与3rd.png合成并存储在 newimage 之后我希望 newimage 文件夹中的图像转换为特定图像天使。 所以我尝试使用代码

   #!/bin/bash
for f in $( ls *.png ); do
  composite -gravity center $f ./doc/back.png ./newimage/new$f
done 
for f in `ls ./newimage`; do

  convert $f -rotate -7 ./angelimage/ang$f
done

现在我发现for循环正常工作,但第二个发出错误,如下所示

convert: unable to open image `new-5elements10.png':  @ error/blob.c/OpenBlob/2587.
convert: unable to open file `new-5elements10.png' @ error/png.c/ReadPNGImage/3234.
convert: missing an image filename `new-5elements10.png' @ error/convert.c/ConvertImageCommand/3011.
convert: unable to open image `new-boltonclinics5.png':  @ error/blob.c/OpenBlob/2587.
convert: unable to open file `new-boltonclinics5.png' @ error/png.c/ReadPNGImage/3234.
convert: missing an image filename `new-boltonclinics5.png' @ error/convert.c/ConvertImageCommand/3011.

1 个答案:

答案 0 :(得分:-1)

不要使用ls(1)来生成送到命令的文件列表。简单的glob扩展就足够了(如下所示)。

引用您的变量以防止出现空白问题。

如果代码中没有任何其他逻辑错误,则应该有效:

#!/bin/bash

for f in *.png;
do
    composite -gravity center "$f" ./doc/back.png "./newimage/new${f}"
done 

for f in ./newimage/*;
do
    convert -rotate -7 "$f" "./angelimage/ang$(basename "$f")"
done