正如标题所述,我试图创建一个读取图像的脚本,与分辨率无关,并将图像转换为十六进制代码列表。例如,具有交替的白色和黑色像素的8x8 PNG图像将转换为:
FFFFFF
000000
FFFFFF
000000
FFFFFF
000000
等等。到目前为止,我已尝试过以下内容:
convert $name.png -compress none pnm:-
但是,上面的代码只返回常规数字而不是十六进制值。这是一个例子:
205 0 0 205 0 0 205 0 0 205 0 0 205 0 0 205 0 0 224 160 0 224 160 0 224 160 0
这里出了什么问题,我将对其进行哪些更改以使其输出十六进制代码?
答案 0 :(得分:2)
您可以使用 ImageMagick 将文件解码为原始RGB值,并使用 xxd 对其进行分组并以十六进制显示:
convert yourImage.png rgb:- | xxd -g3
我使用-g3
分组为RGB文件,如果有alpha /透明层:
convert yourImage.png rgba:- | xxd -g4
您可能希望与xxd
一起使用的其他开关是:
xxd -g3 -c15 # 15 bytes per line, good if you have 5 pixels of 3 bytes each, so hex lines match image scanlines
xxd -ps # continuous output without offsets at start of lines
答案 1 :(得分:1)
这对我有用:
convert yourimage.png txt:- | tail -n +2 | sed -n 's/^.*#\([0-9A-Fa-f]*\).*$/\1/p'