如何从命令行将大量.img文件转换为带有图像magick(IM)的gif

时间:2016-10-20 17:09:23

标签: linux image-processing command-line imagemagick remote-access

我有一组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无法使用的选项,那么这也是一个解决方案。

1 个答案:

答案 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

原始答案

我认为我们可能必须逐步做出这个答案......这看起来像你的形象:

enter image description here

我是这样的:

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