iPhone - маска UIImage и функция CopyImageAndAddAlphaChannel - PullRequest
1 голос
/ 25 февраля 2011

Я пытаюсь создать мозаику, и мне нужно замаскировать UIImages, чтобы получить кусочки головоломки.

Я не понимаю, как я могу маскировать изображение JPG, потому что, как я понимаю, это неесть альфа-канал.Кто-нибудь может мне с этим помочь?JPG находятся на онлайн-сервере, и их невозможно загрузить в формате PNG.

И еще одна вещь, я не могу найти эту функцию в документации Apple: «CopyImageAndAddAlphaChannel».Это вообще существует?Я нашел несколько ссылок на некоторых форумах, но ничего не изменилось.

Большое спасибо, Андрей

1 Ответ

1 голос
/ 26 февраля 2011

Нашел ответ. Вот функция, она работает для JPG и PNG без альфа-канала (я проверял это:)):

CGImageRef imageRef = self.CGImage;
size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);


CGContextRef offscreenContext = CGBitmapContextCreate(NULL,
                                                      width,
                                                      height,
                                                      8,
                                                      0,
                                                      CGImageGetColorSpace(imageRef),
                                                      kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);


CGContextDrawImage(offscreenContext, CGRectMake(0, 0, width, height), imageRef);
CGImageRef imageRefWithAlpha = CGBitmapContextCreateImage(offscreenContext);
UIImage *imageWithAlpha = [UIImage imageWithCGImage:imageRefWithAlpha];


CGContextRelease(offscreenContext);
CGImageRelease(imageRefWithAlpha);

return imageWithAlpha;
...