使用kCGImageAlphaNone的CGBitmapContextCreate函数

24

我迫切需要创建一个没有 alpha 通道的 CGContextRef。遗憾的是,使用 Core Graphics 时,你无法使用 CGBitmapCreateContext 指定 kCGImageAlphaNone。

请有人能够提供一个可用的示例,让我如何创建一个没有 alpha 通道的 CGContextRef 吗?

我需要这样做的原因是最终要调用 CGImageCreateWithMaskingColors,而如果提供的 CGImageRef 具有 alpha 通道,则无法正常工作。

请提供一个可用的示例。如果您提供了示例,您将成为第一个实现此功能的人!请发布您的示例!


如果有人遇到了链接中提到的问题,请按照我的解决方案操作:http://answers.opencv.org/question/12273/cgbitmapcontextcreate-invalid-data-bytesrow-error/?answer=104865#post-id-104865 这是一个相关问题。 - Tanmoy Mondal
1个回答

64

你可以创建一个没有 alpha 通道的位图上下文。但是,你不能创建每个像素三个字节的位图上下文。这里有一个秘密握手:

CGContextRef gc = CGBitmapContextCreate(NULL, myWidth, myHeight, 8, 0,
        myColorSpace, kCGImageAlphaNoneSkipLast);
在 Swift 中:
let gc = CGContext(
    data: nil,
    width: myWidth, height: myHeight,
    bitsPerComponent: 8, bytesPerRow: 0,
    space: myColorSpace,
    bitmapInfo: CGImageAlphaInfo.noneSkipLast.rawValue)

谢谢,那个方法可行。信不信由你,在整个网络上你是第一个发布解决方案的人。干得好! - PleaseHelp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接