我有一组1800个图像(每个.img类型为16 of )。
我希望将它们从命令行转换为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格式的方法吗?在他们的文档中,它似乎不是一个受支持的文件类型,但是其他googling说.img图像在格式上非常接近位图。我想知道是否有管道的选择或什么东西可以让我完成我的目标?
编辑:这些图像是直接从CMOS探测器的衍射图案(x射线结晶学)。此外,我还找到了一个隐藏的imageJ可执行文件。因此,如果这提供了IM无法使用的选项,这也可能是一个解决方案。
发布于 2016-10-20 18:23:00
作为第一次尝试,我认为你需要一些类似的东西:
#!/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%
或类似的。看看你是怎么上来汇报的!
因此,将上述内容保存在一个名为go
的文件中,放在您的HOME (登录)目录中,然后执行以下命令(仅一次)以使其可执行:
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
https://stackoverflow.com/questions/40160484
复制相似问题