Dieser Code kombiniert ein Bild und ein Graustufenmaskenbild in einem UII-Bild. Es funktioniert, aber es ist langsam.Wie kombiniere ich ein Bild mit einer Maske zu einem einzigen UIImage mit Accelerate Framework?
+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *) mask
{
CGImageRef imageReference = image.CGImage;
CGImageRef maskReference = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference),
NULL, // Decode is null
YES // Should interpolate
);
CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
Ich denke, dass Accelerate Framework helfen kann. Aber ich bin mir nicht sicher. Es gibt vImage und es kann alpha compositing tun. Oder, was ich suche, heißt "vImage Transform". Nicht wie CATransform3D, aber das Bild wird "transformiert".
Aber was ich brauche, ist ein Foto in ein transparentes JPEG basierend auf einer Maske zu machen.
Kann Accelerate Framework dafür verwendet werden? Oder gibt es eine Alternative?