Черно-белый графический контекст

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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам