質問

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

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

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

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

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

役に立ちましたか?

解決

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

ただし、これは 1 ビットのビットマップがサポートされている場合の話です。 彼らはそうではない.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top