1

私は Quartz/Core-graphics で働いています。白黒、1 ピクセルあたり 1b のグラフィックス コンテキストを作成しようとしています。

私は現在、グレースケール画像 (実際には白黒) を持つ CGImageRef を持っています。それを白黒の BitmapContext に描画して、ビットマップを取得し、CCITT グループ 4 で圧縮できるようにします (何らかの理由で、Quartz では LZW 以外の TIFF 形式で保存できません)。

したがって、1 ピクセルあたり 1 ビットのデータが必要です。1bpp コンテキストに描画すればそれができると思います。ただし、次のコンテキストを作成することはできません。

    context = CGBitmapContextCreate (data,
                pixelsWide,
                pixelsHigh,
                1,
                pixelsWide/8,
                CGColorSpaceCreateDeviceGray(),
                kCGImageAlphaNone
                                 );

グレーよりも小さい色空間はありますか?

4

1 に答える 1

2

1 ビットのビットマップがサポートされてpixelsWideいたとしても、 が 8 の倍数でない場合、1 行あたりのバイト数は整数ではありません。たとえば、イメージの幅が 12 ピクセルの場合、1 行あたりのバイト数は 1 であり、半分。あなたの除算式は、これを行ごとに 1 バイトに切り捨てますが、これは間違っています。

ただし、それは 1 ビットのビットマップがサポートされていた場合であり、サポートされていません

于 2009-04-16T20:52:55.997 に答える