2012-04-14 96 views

回答

1

您可以使用Imagemagick

如果你只想要一個灰度通道:

convert image.png -depth 2 data.gray 

如果你想爲每個紅,綠,藍色通道2位:

convert image.png -depth 2 data.rgb 
+0

輸出結果到底如何?它似乎每個字節多次咬,但我不明白如何。 – 2015-09-28 12:39:37

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 

我們已經建立了一個輸入文件,1 0重複10次位。到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 

因此,似乎是,如果深度< 8,然後操作ImageMagick的線的角度來看,和0墊丟失比特。

我已經測試過每像素1位,這個理論是一致的。

經過ImageMagick 6.7.7-10,Ubuntu 14.04的測試。