2012-04-14 12 views

Antwort

1

können Sie verwenden Imagemagick:

, wenn Sie nur ein Graustufenkanal:

convert image.png -depth 2 data.gray 

Wenn Sie 2 Bits für jeden roten, grünen und blauen Kanäle wollen:

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

Wie genau ist die Ausgabe organisiert? Es scheint mehrere Bits pro Byte zu geben, aber ich verstehe nicht genau wie. –

1

Zusätzlich zu David's command empfehle ich, dass Sie die -size sowie eine der beiden:

setzen
convert -depth 2 -size 1x<number-pixels> f.png f.gray 
convert -depth 2 -size <number-pixels>x1 f.png f.gray 

da dies die einfachsten Ausgaben sind, die danach verwendet werden.

Das Problem ist, dass Bits nicht adressierbar sind, also müssen sie irgendwie in Bytes organisiert werden.

Ich habe nicht die Dokumentation für diese, aber ein einfaches Beispiel zeigt das Muster gefunden:

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 

Wir haben eine Eingabedatei mit Bits erstellt 1 0 10 mal wiederholt. Die Umstellung auf 2-Bit-Tiefe gibt:

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 

So scheint es, dass, wenn Tiefe < 8, dann ImageMagick zeilenweise und 0 Pads fehlenden Bits arbeitet.

Ich habe mit 1-Bit pro Pixel getestet, und diese Theorie war konsistent.

Getestet mit ImageMagick 6.7.7-10, Ubuntu 14.04.

Verwandte Themen