我试图使用imagemagick模糊数千(> 50,000)图像的底部。图像分辨率为800x600。命令行代码(如下)有效,但需要很长时间。有没有什么方法可以并行运行,并希望使用system()从R内部调用?
我从互联网上获取此代码,因此我不确定它是否是实现此目标的最佳方式?任何帮助将不胜感激。提前谢谢!
(OS = OSX El Capitan)
cd /Users/Desktop/test_images
list=$(ls *.jpg)
for img in $list; do
convert $img \
\( -size 800x525 xc:black -size 800x75 xc:white -append \) \
-compose blur -define compose:args=6 -composite \
cd /Users/Desktop/test_images/results/$img
done
cd
答案 0 :(得分:1)
我认为这个命令与你正在做的事情非常相似,但FAR更快。看看你是否喜欢这种效果:
convert start.jpg \( +clone -crop +0+525 -blur x4 \) -gravity south -composite result.jpg
如果可行,您可以像以前一样使用 GNU Parallel :
parallel 'convert {} \( +clone -crop +0+525 -blur x4 \) -gravity south -composite results/{}' ::: *.jpg
您也可以将该批次放在名为BlurTitle
的脚本中,如下所示:
#!/bin/bash
parallel 'convert {} \( +clone -crop +0+525 -blur x4 \) -gravity south -composite results/{}' ::: *.jpg
然后使用以下命令使其可执行:
chmod +x BlurTitle
并从R
拨打:
system("./BlurTitle")
或来自终端:
./BlurTitle
如果你得到"参数列表太长",你可以通过在stdin
而不是在命令之后发送参数来反过来表达它:
cd /path/to/images
find . -name \*.jpg -print0 | parallel -0 'convert {} \( +clone -crop +0+525 -blur x4 \) -gravity south -composite results/{}'