Как замаскировать UIImage, чтобы белый цвет стал прозрачным на iphone? - PullRequest
2 голосов
/ 10 июля 2009

У меня есть UIImage (созданный по пользовательскому чертежу) с белым фоном. Я хотел бы сделать белые части этого изображения прозрачными. Я также хотел бы сохранить это в файл PNG.

Я просматривал форумы, но не могу понять, как правильно замаскировать изображение. Кто-нибудь пробовал это раньше?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 01 сентября 2009

Попробуйте что-то вроде этого ...

CGImageRef myMaskedImage = [myImage CGImage];
const float whiteMask[6] = { 255,255,255, 255,255,255 };
CGImageRef myColorMaskedImage = CGImageCreateWithMaskingColors(image, whiteMask);

CGDataProviderRef provider;
CGImageRef myPngImage = CGImageCreateWithPNGDataProvider(provider, NULL, true, kCGRenderingIntentDefault);

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt: 72], kCGImagePropertyDPIHeight, [NSNumber numberWithInt: 72], kCGImagePropertyDPIWidth, nil];
CGImageDestinationRef destRef = CGImageDestinationCreateWithURL ((CFURLRef)outPath, (CFStringRef)@"image.png" , 1, NULL);
CGImageDestinationAddImage(destRef, myPngImage, (CFDictionaryRef)options);
CGImageDestinationFinalize(destRef);
CGRelease(destRef);

CGImageRelease(myColorMaskedImage);
CGImageRelease(myPngImage);

из довольно длинного набора Quartz2d Руководство по программированию и это сообщение списка рассылки .

0 голосов
/ 11 июля 2009

Вам нужно будет получить необработанные данные, найти белые пиксели, изменить альфа этих пикселей и сохранить их в новом объекте NSData, а затем преобразовать их в PNG.

Это не сложно, но я бы не назвал это тривиальным.

0 голосов
/ 10 июля 2009

Вы можете попытаться сделать начальный UIImage полностью прозрачным, а затем создать еще один UIImageView, полностью белый.

...