2013-06-10 2 views
2

Dont работа с кодом: Маскирование изображения с изображением?

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 = (нуль) - Почему?

В документации Apple: Вместо передачи маски изображения, которая создается с помощью функции CGImageMaskCreate, вы поставить изображение, созданное из одной из функций создания образа Quartz.

Исходные образцы изображения, которое используется в качестве маски (но не является маской изображения кварца), действуют как альфа-значения. .... В этом случае предположим, что изображение, показанное на рисунке 11-6, создается с использованием одной из функций создания изображения Quartz, таких как CGImageCreate.

, но не работает ... Хм

журнала Info myImageMask:
Ширина: 440
Высота: 292
BitsPerComponent: 8
BitsPerPixel: 8
BytesPerRow: 440
BitmapInfo: 0
ColorSpace: (kCGColorSpaceICCBased; kCGColorSpaceModelMonochrome; Dot Gain 20%)

RenderingIntent: 2

+0

+1 за приятные глазу кода/шрифта. –

+0

- myImageMask и myImage! = Null? –

+0

myImageMask == истина/myImage == истина/localMaskImage == верно – TESTer

ответ

0

Единственное, что может вызвать проблемы, чтобы иметь myImage в null в следующей строке. Остальной код выглядит неплохо.

localResultImage = CGImageCreateWithMask(myImage, localMaskImage); 

Если myImage является объектом класса UIImage, то вы должны использовать ниже линии:

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

myImage: myImageMask: localMaskImage: localResultImage: (нуль) – TESTer

+0

myImage и все объекты изображения является CGImageRef , Все объекты прекрасно отображаются в представлении, кроме - localResultImage. – TESTer

Смежные вопросы