是否有快速工具将某些图像转换为每像素2位原始位图数据?
答案 0 :(得分:1)
您可以使用Imagemagick:
如果你只想要一个灰度通道:
convert image.png -depth 2 data.gray
如果每个红绿蓝通道需要2位:
convert image.png -depth 2 data.rgb
答案 1 :(得分:1)
除了David's command之外,我建议您设置-size
以及以下任意一种:
convert -depth 2 -size 1x<number-pixels> f.png f.gray
convert -depth 2 -size <number-pixels>x1 f.png f.gray
因为这些是后来使用的最简单的输出。
问题是位不可寻址,因此它们必须以某种方式组织成字节。
我还没有找到相关文档,但是一个简单的例子显示了模式:
printf "%10s" | sed 's/ /\xFF\x00/g' > f.gray
convert -depth 8 -size 1x20 f.gray -depth 2 g.gray
hd g.gray
convert -depth 8 -size 2x10 f.gray -depth 2 g.gray
hd g.gray
convert -depth 8 -size 10x2 f.gray -depth 2 g.gray
hd g.gray
convert -depth 8 -size 20x1 f.gray -depth 2 g.gray
hd g.gray
我们创建了一个重复10次的位1 0
的输入文件。转换为2位深度给出:
00000000 c0 00 c0 00 c0 00 c0 00 c0 00 c0 00 c0 00 c0 00 |................|
*
00000014
00000000 c0 c0 c0 c0 c0 c0 c0 c0 c0 c0 |..........|
0000000a
00000000 cc cc c0 cc cc c0 |......|
00000006
00000000 cc cc cc cc cc |.....|
00000005
所以看来如果深度&lt; 8,然后ImageMagick按行操作,0个缺失位。
我已经测试过每像素1位,这个理论是一致的。
使用ImageMagick 6.7.7-10,Ubuntu 14.04进行测试。