[英]How to convert a large series of .img files to a gif with image magick (IM) from command line
我有一组1800张图像(每个.img类型16Mb)。
我想从命令行将它们转换为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.
我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图像的格式非常接近位图。 我想知道是否有管道选项或可以让我实现目标的东西?
编辑 :这些是直接来自CMOS衍射图样检测器的图像(X射线晶体学)。 我也刚刚找到了一个隐藏的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
输出为电影/视频
如果您想尝试输出视频/电影而不是动画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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.