Черно-белый графический контекст - PullRequest
1 голос
/ 17 апреля 2009

Я работаю в Quartz / Core-graphics. Я пытаюсь создать черно-белый, 1b на пиксель графический контекст.

В настоящее время у меня есть CGImageRef с изображением в градациях серого (которое действительно черно-белое). Я хочу нарисовать его в черно-белом BitmapContext, чтобы я мог извлечь растровое изображение и сжать его с помощью CCITT-группы 4. (По какой-то причине Quartz не позволит вам сохранять в любом формате TIFF, кроме LZW).

Итак, мне нужны данные 1 бит на пиксель. Я полагаю, что рисование в контексте 1bpp сделает это. Тем не менее, это не позволит мне создать контекст с:

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

Есть ли цветовое пространство меньше серого?

1 Ответ

2 голосов
/ 17 апреля 2009

Даже если поддерживаются 1-битные растровые изображения, если pixelsWide не кратно 8, то число байтов в строке не является целым числом: например, если ваше изображение имеет ширину 12 пикселей, то число байт на строку - это полтора. Ваше выражение деления будет усекать это до одного байта на строку, что неправильно.

Но это если бы поддерживали 1-битные растровые изображения, , которые они не .

...