Sagar...
Sagar...

Reputation: 1062

UIImage Black and White with Transparency.

Below is code for converting image to Black and white. it is working fine unless image with Transparency comes. That transparent area is converted to black. please help on this what is wrong here.

+ (UIImage *)getBlackAndWhiteVersionOfImage:(UIImage *)anImage
{
    UIImage *newImage;
    UIImage *imageToDisplay;

    int orientation = anImage.imageOrientation;

    if (anImage) {
        CGColorSpaceRef colorSapce = CGColorSpaceCreateDeviceGray();
        CGContextRef context = CGBitmapContextCreate(nil, anImage.size.width * anImage.scale, anImage.size.height * anImage.scale, 8, anImage.size.width * anImage.scale, colorSapce, kCGImageAlphaNone);
        CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
        CGContextSetShouldAntialias(context, NO);
        CGContextDrawImage(context, CGRectMake(0, 0, anImage.size.width, anImage.size.height), [anImage CGImage]);

        CGImageRef bwImage = CGBitmapContextCreateImage(context);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSapce);

        UIImage *resultImage = [UIImage imageWithCGImage:bwImage];
        CGImageRelease(bwImage);

        UIGraphicsBeginImageContextWithOptions(anImage.size, NO, anImage.scale);
        [resultImage drawInRect:CGRectMake(0.0, 0.0, anImage.size.width, anImage.size.height)];
        newImage = UIGraphicsGetImageFromCurrentImageContext();
         imageToDisplay =
        [UIImage imageWithCGImage:[newImage CGImage]
                            scale:1.0
                      orientation: orientation];

        UIGraphicsEndImageContext();
    }

    return imageToDisplay;
}

Upvotes: 0

Views: 319

Answers (1)

Rob van der Veer
Rob van der Veer

Reputation: 1148

I dont think gray colorspace has an alpha compononent

Upvotes: 1

Related Questions