我有一组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图像格式非常接近位图。我想知道是否有管道选项或能让我实现目标的东西?
EDIT :这些是直接来自衍射图案的CMOS检测器(x射线晶体学)的图像。 我还发现了一个隐藏的imageJ可执行文件。因此,如果它提供了IM无法使用的选项,那么这也是一个解决方案。
答案 0 :(得分:3)
作为第一次尝试,我认为你需要这些方面的东西:
#!/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