【问题标题】:How to get CGImageRef from CGContextRef?如何从 CGContextRef 获取 CGImageRef?
【发布时间】:2015-07-15 16:53:45
【问题描述】:

我正在尝试将两个图像添加到上下文中,但是它不起作用并抛出

GBitmapContextCreateImage:无效的上下文 0x0

错误。我使用以下代码:

//some image
CGImageRef image = ...
//some image as well, but masked. Works perfectly.
CGImageRef blurredAndMasked = CGImageCreateWithMask(blurred, mask);
//Both images are fine. Sure.

//Initializing the context and color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(nil, frameSize.width, frameSize.height, 8, 0, colorSpace, kCGBitmapAlphaInfoMask);

//Drawing images into the context
CGContextDrawImage(ctx, CGRectMake(0, 0, frameSize.width, frameSize.height), image);
CGContextDrawImage(ctx, CGRectMake(0, 0, frameSize.width, frameSize.height), blurredAndMasked);

//getting the resulting image
CGImageRef ret = CGBitmapContextCreateImage(ctx);

//releasing the stuff
CGImageRelease(image);
CGImageRelease(blurred);
CGImageRelease(blurredAndMasked);
CGColorSpaceRelease(colorSpace);
CGContextRelease(ctx);

这看起来不错,但生成的图像都是黑色的或看起来非常相似:

代码中应该改变什么?提前致谢!

【问题讨论】:

    标签: ios objective-c iphone xcode core-foundation


    【解决方案1】:

    kCGBitmapAlphaInfoMask 不是 CGBitmapContextCreate 的最后一个 (bitmapInfo) 参数的有效值。它是一个掩码(因此得名),您可以将其与& 运算符一起使用,以从CGBitmapInfo 值中获取CGImageAlphaInfo。你永远不会在 CGBitmapInfoCGImageAlphaInfo 预期的地方传递 kCGBitmapAlphaInfoMask

    假设您不需要特定的字节顺序,我相信这是 iOS 上具有 alpha 通道的最高性能像素格式:

    CGContextRef ctx = CGBitmapContextCreate(nil,
        frameSize.width, frameSize.height, 8, 0, colorSpace,
        kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
    

    这应该是没有 alpha 通道的最高性能:

    CGContextRef ctx = CGBitmapContextCreate(nil,
        frameSize.width, frameSize.height, 8, 0, colorSpace,
        kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多