用图像屏蔽图像



不要使用代码:<我>

    CGImageRef localResultImage;
    CGImageRef localMaskImage;
    size_t width = CGImageGetWidth(myImageMask);
    size_t height = CGImageGetHeight(myImageMask);
    size_t bitsPerComponent = CGImageGetBitsPerComponent(myImageMask);
    size_t bitsPerPixel = CGImageGetBitsPerPixel(myImageMask);
    size_t bytesPerRow = CGImageGetBytesPerRow(myImageMask);
    CGDataProviderRef provider = CGImageGetDataProvider(myImageMask);
    CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(myImageMask);
    CGColorSpaceRef space = CGImageGetColorSpace(myImageMask);
    CGColorRenderingIntent intent = CGImageGetRenderingIntent(myImageMask);
    localMaskImage = CGImageCreate(width,
                                   height,
                                   bitsPerComponent,
                                   bitsPerPixel,
                                   bytesPerRow,
                                   space,
                                   bitmapInfo,
                                   provider,
                                   NULL,
                                   TRUE,
                                   intent);
    localResultImage = CGImageCreateWithMask(myImage, localMaskImage);
    CGContextDrawImage(myContext, dirtyRect, localResultImage);

localResultImage = (null) -为什么?

在Apple文档中:而不是传递一个用CGImageMaskCreate函数创建的图像掩码,您提供了一个由Quartz映像创建函数创建的映像。

用作掩模(但不是石英图像掩模)的图像源样本作为alpha值操作。…在这种情况下,假设图11-6所示的图像是使用石英图像创建函数之一创建的,例如CGImageCreate。

但不工作…嗯

日志信息myImageMask:
宽度:440
身高:292
BitsPerComponent: 8
BitsPerPixel: 8
BytesPerRow: 440
BitmapInfo: 0
色彩:(kCGColorSpaceICCBased;kCGColorSpaceModelMonochrome;点增益20%)
RenderingIntent: 2

唯一可能导致问题的是在下一行中将myImage作为null。剩下的代码看起来都不错。

localResultImage = CGImageCreateWithMask(myImage, localMaskImage);

如果myImage是UIImage类的对象,那么你应该在下面一行使用:

localResultImage = CGImageCreateWithMask([myImage CGImage], localMaskImage);

最新更新