iOS本地图片转为黑白图片

视图灰度化作为不可用的状态,是一个很普遍的做法,系统的按钮也是这么做的。简单点,设计给两张图就好了,但是过多的图片会导致APP越来越大。能用代码实现又何必再加一张图。

+ (UIImage*)greyImageWithImage:(UIImage*)image
{
    //根据设备的屏幕缩放比例调整生成图片的尺寸,避免在图片变糊    
    CGFloat scale = [UIScreen mainScreen].scale;
    CGSize resultSize = CGSizeMake(image.size.width*scale, image.size.height*scale);
    
    CGRect imageRect = CGRectMake(0, 0, resultSize.width, resultSize.height);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef context = CGBitmapContextCreate(nil, resultSize.width, resultSize.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);//使用kCGImageAlphaPremultipliedLast保留Alpha通道,避免透明区域变成黑色。
    CGContextDrawImage(context, imageRect, [image CGImage]);
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
    UIImage *newImage = [UIImage imageWithCGImage:imageRef];
    CGColorSpaceRelease(colorSpace);
    CGContextRelease(context);
    CFRelease(imageRef);
    return newImage;
}

你可能感兴趣的:(iOS本地图片转为黑白图片)