我有一个原始文件,但我不知道图像的像素格式或宽度。我需要一个可以快速显示数据并允许我轻松尝试不同格式的工具。Windows 上的此类工具的示例如下7yuv. Linux 上有哪些软件可以完成这个任务?
注意:这与数码相机原始数据无关,这让我尝试使用谷歌来回答这个问题感到沮丧。
答案1
事实证明 Gimp 可以做到这一点。只需以原始格式打开文件,您就会看到这个有用的对话框,它允许您预览图像:
答案2
convert
来自 ImageMagick
例如,8 位 2x3 灰度:
printf '\x00\xFF\x88\xFF\x00\xFF' > in.bin
然后:
convert -depth 8 -size 3x2+0 gray:in.bin out.png
命令解释:
-depth 8
:每种颜色有 8 位-size 2x3+0
:2x3
image.+0
表示从文件中的偏移量 0 开始。如果有元数据标头,则可以使用偏移量跳过它们。gray:in.bin
:输入文件为in.bin
,格式为gray
,定义在http://www.imagemagick.org/script/formats.php使用这种奇怪的符号是因为 ImageMagick 通常根据扩展名来确定格式,但这里没有扩展名。
如何查看类似本例的微小输出
现在的问题是如何准确查看如此微小的 3x2 输出。直接eog
:
eog out.png
不是很好,因为图像太小,如果放大,eog
会使用连续混合像素的显示算法,这对于大多数图片来说比较好,但对于这么小的图像则不然。
一个很好的可能性是运行:
convert out.png -scale 300x out2.png
或者直接一次性执行:
convert -depth 8 -size 3x2+0 gray:in.bin -scale 300x out.png
-scale
是需要的,而不是-resize
,因为它-resize
像默认情况下一样连续混合像素颜色eog
。
输出:
另一个选择是在 Gimp 中查看它:
gimp out.png
如果您将图像放大到足够大,Gimp 等图像编辑器必须单独显示每个像素。
RGB 示例
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > in.bin
convert -depth 8 -size 3x1+0 rgb:in.bin out.png
或者使用以下方式-scale
使其更易于查看:
convert -depth 8 -size 3x1+0 rgb:in.bin -scale 300x out.png
有关的:
在 Ubuntu 16.04、ImageMagick 6.8.9 上测试。
答案3
这个python代码片段可以做到这一点:
from PIL import Image
import numpy as np
raw_img = np.fromfile("image", dtype=np.uint8)
l = int(np.sqrt(raw_img.shape[0]/4)) # for a l x l square image
Image.frombytes(mode='RGBA', size=(l, l), data=raw_img).show()