2009-04-16 103 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

相關問題