我不确定imagemagick能否做到这一点,或者我是否需要自己写点东西;但我想将下面的图像转换为文本文件,使每行代表一个像素(从左到右,从上到下阅读),每行有15位数据(R为5位) ,G和B)。
因此,例如下面的图像将具有256x224 = 57,344行的15位。
imagemagick能够做到这一点吗?如果不存在另一种资源?感谢任何帮助。
答案 0 :(得分:3)
只需使用“.txt”输出格式:
magick U4zI6.png U4zI6.txt
这将为每一行提供更多的信息,但你可以 使用文本编辑器(如“sed”)来提取RGB值。
$ head -6 U4Zi6.txt
# ImageMagick pixel enumeration: 256,224,65535,srgb
0,0: (28784,45232,53456) #70B0D0 srgb(112,176,208)
1,0: (28784,45232,53456) #70B0D0 srgb(112,176,208)
2,0: (28784,45232,53456) #70B0D0 srgb(112,176,208)
3,0: (28784,45232,53456) #70B0D0 srgb(112,176,208)
4,0: (28784,45232,53456) #70B0D0 srgb(112,176,208)
答案 1 :(得分:1)
这应该做你想要的:
convert U4zI6.png -depth 8 rgb: | perl -e '
# Read file, 3 RGB bytes at a time
{
local $/ = \3;
while(my $pixel=<STDIN>){
my ($r,$g,$b) = unpack("CCC",$pixel);
printf("In R/G/B: %d/%d/%d\n",$r,$g,$b);
my $r = ($r >> 3) & 63;
my $g = ($g >> 3) & 63;
my $b = ($b >> 3) & 63;
printf("Out R/G/B: %d/%d/%d\n",$r,$g,$b);
}
}
'