我在 Linux Mint 机器上有一个包含 170 张 png 照片的目录,我想将其分成两半。我想出了一个解决方案,但它没有正常工作,因为它使缓存超载。我编写的命令对 1 张图片有效,该命令是:
convert -crop 50%x100% ../image_location.png image_location_cropped.png
我尝试写一个循环,但没有成功。如下所示:
for i in Testovnica_chemia-???.png
do
convert -crop 50%x100% ../Testovnica_chemia-???.png Testovnica_chemia-???_upravene.png
done
错误信息如下:
convert-im6.q16: cache resources exhausted `../Testovnica_chemia-056.png' @ error/cache.c/OpenPixelCache/4083.
我该如何修改呢?
看起来你创建了循环,但没有使用循环变量
当你确信循环会按照你的要求执行时,请将其替换
echo convert
为convert
对循环存在根本性的误解。让我们来看看您的代码:
您的循环将运行,并且
i
是 的每个实例Testovnica_chemia-???.png
,因此Testovnica_chemia-001.png
,Testovnica_chemia-002.png
,等等。i
现在,您不再使用指向的文件,而是使用每个Testovnica_chemia-???.png
作为参数的实例。因此,每次循环时,您都会执行可能
Testovnica_chemia-???_upravene.png
不会匹配任何内容,因此,如果转换没有崩溃,您最终会得到一个带有问号的文件名。诀窍是
$i
在循环中使用文件名。@Chris Davies 的答案就是这样的。