如何让UIImage变暗?

时间:2013-01-15 13:40:45

标签: objective-c uiimage grayscale

我可以在网上找到许多制作UIImage灰度的教程。但我只是希望UIImage稍微暗一些,仍然很多彩。这可能吗?如果是,请给我一些样本来源。

感谢。

2 个答案:

答案 0 :(得分:1)

您应该调查Core Image过滤器 - 这里是Apple Docs

(...或者你可以按照Attila的回答,更简单!)

答案 1 :(得分:1)

感谢Zenox,这个解决方案很好用:

+ (UIImage *)colorizeImage:(UIImage *)image withColor:(UIColor *)color {
    UIGraphicsBeginImageContext(image.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect area = CGRectMake(0, 0, image.size.width, image.size.height);

    CGContextScaleCTM(context, 1, -1);
    CGContextTranslateCTM(context, 0, -area.size.height);

    CGContextSaveGState(context);
    CGContextClipToMask(context, area, image.CGImage);

    [color set];
    CGContextFillRect(context, area);

    CGContextRestoreGState(context);

    CGContextSetBlendMode(context, kCGBlendModeMultiply);

    CGContextDrawImage(context, area, image.CGImage);

    UIImage *colorizedImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return colorizedImage;
}