2009-04-16 101 views
1

我正在Quartz/Core-graphics中工作。我正在试图创建一个黑色和白色,每像素1b图形上下文。黑色和白色图形上下文

我目前有一个CGImageRef与灰度图像(这是真正的黑色和白色)。我想将它绘制成黑白的BitmapContext,这样我就可以将位图取出并用CCITT-group 4进行​​压缩。(由于某些原因,Quartz不会让您保存除LZW之外的任何TIFF格式)。

所以,我需要每像素1bit的数据。我认为,绘制到1bpp上下文会做到这一点。但是,它不会让我创建上下文:

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

是否有一个色彩空间比灰小吗?

回答

2

即使支持1位位图,如果pixelsWide不是8的倍数,那么每行的字节数不是整数:例如,如果图像宽度为12像素,则字节数每行是一个半。你的分割表达式会将其截断为每行一个字节,这是错误的。

但是,这是如果1位位图支持,which they aren't

+0

那么,在现实中我(像素宽度+7)/ 8,以避免这个问题。整数算术和所有... 但是,不幸的链接失败。你可以编辑? – 2009-04-16 21:20:55

+0

我想你想链接到http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB – 2009-04-16 21:28:30

相关问题