如何从命令行使用 image magick (IM) 将大量 .img 文件转换为 gif

How to convert a large series of .img files to a gif with image magick (IM) from command line

我有一组 1800 张图片(每张 16Mb,.img 类型)。

我想从命令行将它们转换为 gif,因为我远程连接到存储它们的服务器并且下载所有它们(用于本地程序)是不可行的。我无法在服务器上安装新程序,但它安装了 imagemagick (IM)。

当我尝试标准命令时:convert -resize 20% -delay 5 -loop 0 /pwd/*.img output.gif

我得到一个错误no decode delegate for this image format IMG @ error/constitute.c/ReadImage/504. convert: no images defined d263g_07.gif @ error/convert.c/ConvertImageCommand/3257.

有没有办法在 IM 中处理 img 格式?在他们的文档中似乎它不是受支持的文件类型,但其他谷歌搜索说 .img 图像在格式上非常接近位图。我想知道是否有管道选项或其他东西可以让我实现我的目标?

编辑:这些图像直接来自衍射图案(x 射线晶体学)的 CMOS 检测器。 我也刚刚发现了一个隐藏的 imageJ 可执行文件。因此,如果它提供了 IM 不可用的选项,那也可能是一个解决方案。

作为第一次尝试,我认为您需要以下方面的信息:

#!/bin/bash

for f in *img; do
    cat "$f" | convert -depth 16 -size 2952x2820+3072 gray:- -resize 800x -normalize -depth 8 MIFF:-
done | convert - -delay 80 result.gif

您可能需要降低质量或子样本帧或进一步减小尺寸以获得可接受的 GIF 尺寸。要减小大小,可以将其更改为 -resize 500x。或者为了降低质量(并因此降低大小),添加 -quality 75% 或类似内容。看看你过得怎么样,然后回来汇报!

因此,将以上内容保存在您的 HOME(登录)目录中名为 go 的文件中,然后执行以下命令(仅一次)以使其可执行:

chmod +x $HOME/go

然后,进入存放图片的目录,例如:

cd /some/place/images

和 运行 通过键入脚本:

$HOME/go

过一会儿它有望完成,动画 GIF 将被调用 result.gif。如果您仍然有问题,请按原样复制下面的每一行,然后将它们一次一行地粘贴到您的终端中:

for f in *img; do cat "$f" | 
convert -depth 16 -size 2952x2820+3072 gray:- -resize 800x -normalize -depth 8 MIFF:- done |
convert - -delay 80 result.gif

我不知道你安装了哪些查看器,但你可以试试:

feh results.gif

输出为movie/video

如果您想尝试输出 video/movie 而不是动画 GIF,您应该可以使用 ffmpeg 来实现。该命令看起来很像这样:

#!/bin/bash

for f in *img; do
    cat "$f" | convert -depth 16 -size 2952x2820+3072 gray:- -resize 800x -normalize -depth 8 ppm:-
done | ffmpeg -f image2pipe -framerate 30 -i - -c:v libx264 -pix_fmt yuv420p test.mp4

原答案

我认为我们可能必须逐步回答这个问题...这看起来像您的图片吗:

我是这样理解的:

convert -depth 16 -size 2952x2820+3072 gray:- -normalize a.jpg < ~/Desktop/d263g-07_1_0001.img