将 mogrify 与 Image Magick 一起使用时如何重命名图像?

Posted

技术标签:

【中文标题】将 mogrify 与 Image Magick 一起使用时如何重命名图像?【英文标题】:How do I rename images when using mogrify with Image Magick? 【发布时间】:2021-03-26 00:38:28 【问题描述】:

我正在尝试自动将图像转换为指定的 tif 格式。我把它转换得很好,但还需要在文件名的末尾和每个转换文件的扩展名之前添加“_GS”。以下是我所拥有的,但没有找到将“_GS”添加到文件名的解决方案。提前感谢您的帮助。

for f in "$@"
do
    echo "$f"
/usr/local/bin/mogrify -density 300 -resize 1000x1000 -type grayscale -define tiff:endian=msb -compress LZW -format tif "$f" [0] 
done

【问题讨论】:

【参考方案1】:

第 1 项:使用 Image Magick,要创建新文件而不是覆盖现有文件,请使用 convert,而不是 mogrifymagick convert 使用较新版本的 IM)。

第 2 项:您可以使用 shell 参数扩展来删除扩展名,然后从中构建新文件名和新后缀:

for f in "$@"
do
    echo "$f"
    /usr/local/bin/convert "$f" -density 300 -resize 1000x1000 -type grayscale \
      -define tiff:endian=msb -compress LZW -format tif "$f%.*_GS.tiff"
done

$variable%pattern 返回variable 的扩展,并从末尾删除pattern 的最短匹配。

【讨论】:

注意将原始文件名在参数中的位置移动到convert,并将其分成两行以便于阅读。 感谢您的帮助,它正在工作,但结果是创建了一个附加文件。 4.ext更改为4_GS.tiff,然后创建另一个文件4_GS_GS.tiff 听起来你在一个目录中的所有文件上运行了多次。 对不起,我对脚本有点陌生,但我似乎无法弄清楚为什么它会第二次运行。我正在使用带有文件夹操作的自动机。我唯一能想到的是当它创建第一个 *_GS.tif 时,该文件夹将其视为一个新文件并再次运行该脚本。但如果是这样的话,它不是无限的吗?如此接近,再次感谢您的帮助。 最好写一个简单的脚本循环而不是转换。 Convert 比旧的 mogrify 灵活得多。

以上是关于将 mogrify 与 Image Magick 一起使用时如何重命名图像?的主要内容,如果未能解决你的问题,请参考以下文章

将 Magick::Image 转换为 cv::Mat

mini_magick

图片处理技巧, image magick 与音频处理

R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)

闪亮的 Flexdashboard 中的 image_composite (Magick) 返回错误

R语言使用magick包的image_composite函数在一张图片的特定位置将另外一张图片合成上去(combining two images on a specific position)