我在一个目录中有很多不同的图像,它们的名称1 2 3 4 ...
是连续的,我想知道是否可以在jpg
不保留纵横比的情况下将它们全部转换为 900x900 并将它们全部调整为 900x900。
我在第一部分尝试的是:
$ mogrify -format jpg -- *
但是当我这样做时,内存使用量增加得如此之快,然后进程就被杀死了。 我尝试调整大小的是:
$ mogrify -resize 900x900 -- *
mogrify: insufficient image data in file `109.jpg' @ error/jpeg.c/ReadJPEGImage/1039.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
mogrify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
正如我所说,文件的名称是序号。我还有以下内容:
$ file * | grep -Po "^\d*: *\K[^:,]*(?=,)" | sort | uniq
ASCII text
GIF image data
JPEG image data
PNG image data
那么问题是什么?我该如何解决?
我建议使用
convert
ImageMagick 的工具:该
-resize
选项应该非常明显,并且输出文件格式是使用其文件扩展名自动确定的。要在当前目录中的所有文件上运行它,试试这个:
这将获取当前目录中的所有文件(无论文件类型如何),并通过剥离旧扩展名并添加“.jpg”来为每个输入文件创建相应的输出文件名。然后它使用
convert
上述方法来调整图像大小和转换图像,这会创建一个新文件并保持原样。如果成功 (&&
),请检查输出文件是否存在以及输入文件名是否与输出文件名不同(例如,如果原始文件之一已经是 jpg)。现在,如果满足这些条件,我们假设我们可以删除输入文件。