imagemagick convert 命令在我的系统上似乎无法正常工作

imagemagic's convert command doesnt seem to work correctly on my system

我试图批量降低我系统上存储在该位置的一些图像的质量

~/sandboxArea/MainCam

我运行下面的命令

for i in $(ls ~/sandboxArea/MainCam); do convert $i -quality 30 ~/sandboxArea/converted/$i; done

上面的命令起作用了,所有文件都先缩小了大小,然后放入“~sandboxArea/converted”文件夹

然后我再次尝试降低存储在该位置的图像质量

~/sandboxArea/SecondCam

和 运行 上面的命令在进行如下所需的更改后

for k in $(ls ~/sandboxArea/SecondCam); do convert $k -quality 30 ~/sandboxArea/convertedB/$k; done

它给了我以下错误:

convert-im6.q16: no images defined `/home/mohit/sandboxArea/convertedB/IMG_5682.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `IMG_5683.JPG': No such file or directory @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no images defined `/home/mohit/sandboxArea/convertedB/IMG_5683.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `IMG_5684.JPG': No such file or directory @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no images defined `/home/mohit/sandboxArea/convertedB/IMG_5684.JPG' @ error/convert.c/ConvertImageCommand/3258.
convert-im6.q16: unable to open image `IMG_5685.JPG': No such file or directory @ error/blob.c/OpenBlob/2701.
convert-im6.q16: no images defined `/home/mohit/sandboxArea/convertedB/IMG_5685.JPG' @ error/convert.c/ConvertImageCommand/3258.

我尝试了多种方法解决这个问题,也查看了imagemagic.org的官方网站,但没有提到这个问题。

这是一个错误吗?由于此命令曾经有效,但再次失败。

此外,我删除了之前保存在 "converted" 文件夹中的文件,以检查该命令是否可以再次运行。它也在那里失败了。所以同样的命令一次有效,另一次无效。

有人可以帮忙吗。我有大约 8000 多张图片,每张约 7-9MB,所有这些图片都占用了大量 space。只是想在我的 HDD

上保存一些 space

提前致谢。如果有人需要更多说明,请告诉我。 谢谢

这里有一个更简单的方法来重现您的问题:

$ ls ~/tmp
foo.jpg

$ convert foo.jpg bar.jpg
convert-im6.q16: unable to open image `foo.jpg': No such file or directory @ error/blob.c/OpenBlob/2874.
convert-im6.q16: no images defined `bar.jpg' @ error/convert.c/ConvertImageCommand/3258.

问题是,即使您在系统上确实有一个文件 foo.jpg,它位于不同的目录中,因此如果不限定名称您将无法访问它。在这种情况下,您可以改为 运行:

$ convert ~/tmp/foo.jpg c
(success, no output)

或者,您可以将当前目录更改为 foo.jpg 所在的目录:

$ cd ~/tmp
$ convert foo.jpg ~/Downloads/bar.jpg
(success, no output)

更好的循环将遍历 glob 并正确引用以稳健地处理文件名中的空格和类似内容:

for path in "$HOME/sandboxArea/SecondCam"/*
do
  convert "$path" -quality 30 "$HOME/sandboxArea/convertedB/${path##*/}"
done

我对这个命令有不同的问题:

convert -verbose fractal-noise-8192x8192.png -compress none noise-8192x8192.tif

原来是policy.xml文件和内存(或地图?)限制。 我都增加了 8 倍,因为在 Ubuntu 20.04 上它们是 256MiB/512MiB。

编辑:另一个有问题的命令,我进一步增加了限制和磁盘限制。

convert @list.txt test-dataset-512x512x2000.tif