1

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

我目前有一个带有灰度图像(实际上是黑白的)的 CGImageRef。我想把它画成一个黑白的 BitmapContext,这样我就可以把它拿出来并用 CCITT-group 4 压缩它。(由于某种原因,Quartz 不会让你以除 LZW 之外的任何 TIFF 格式保存)。

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

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

有比灰色更小的色彩空间吗?

4

1 回答 1

2

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

但前提是支持 1 位位图,但它们不支持.

于 2009-04-16T20:52:55.997 回答