白黒グラフィックスコンテキスト
-
09-09-2019 - |
質問
私は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 ビットのビットマップがサポートされている場合の話です。 彼らはそうではない.
所属していません StackOverflow