如果您创建一个包含 4 个像素(1 个红色、1 个白色、1 个蓝色和 1 个黑色)的图像,您可以告诉 ImageMagick 将生成的图像输出为文本文件,如下所示:
convert -size 1x1 xc:red xc:white xc:blue xc:black +append -depth 8 -colorspace RGB image.txt
# ImageMagick pixel enumeration: 4,1,255,rgb
0,0: (255,0,0) #FF0000 rgb(255,0,0)
1,0: (255,255,255) #FFFFFF rgb(255,255,255)
2,0: (0,0,255) #0000FF rgb(0,0,255)
3,0: (0,0,0) #000000 rgb(0,0,0)
出于同样的原因,如果您将该文本文件输入 ImageMagick,它可以重新创建图像:
cat image.txt | convert txt:- output.img
因此,我们需要做的就是将您的-fill
命令转换为 ImageMagick 喜欢的格式的文本文件。所以我们可以这样做yourFile
sed -E 's/.*(#[0-9A-F]+).* ([0-9]+)\,([0-9]+).*/\2,\3:\1/g' yourFile
我们会得到这样的东西:
0,0:#3C4AD8
0,1:#269531
0,2:#CF2C7C
...
...
然后我们可以通过管道awk
重新排列 ImageMagick 的喜好:
awk -F: '
BEGIN{print "# ImageMagick pixel enumeration: 2200,2200,255,rgb"}
{
coords=$1;colour=$2
rh="0x" substr(colour,2,2);
gh="0x" substr(colour,4,2);
bh="0x" substr(colour,6,2);
r=strtonum(rh);
g=strtonum(gh);
b=strtonum(bh);
printf "%s: (%d,%d,%d) %s\n",coords,r,g,b,colour;
}'
因此,如果我们将所有这些放在一起,以下脚本应该能够将您心爱的图像创建到文件中spectrumspiral.png
:
#!/bin/bash
sed -E 's/.*(#[0-9A-F]+).* ([0-9]+)\,([0-9]+).*/\2,\3:\1/g' yourFile | awk -F: '
BEGIN{print "# ImageMagick pixel enumeration: 2200,2200,255,rgb"}
{
coords=$1;colour=$2
rh="0x" substr(colour,2,2);
gh="0x" substr(colour,4,2);
bh="0x" substr(colour,6,2);
r=strtonum(rh);
g=strtonum(gh);
b=strtonum(bh);
printf "%s: (%d,%d,%d) %s\n",coords,r,g,b,colour;
}' | convert txt:- spectrumspiral.png