为图像添加色调

时间:2012-06-28 09:08:01

标签: objective-c ios uiimageview uiimagepickercontroller

我正在创建一个应用程序,该应用程序使用UIImagePickerController向用户呈现一个自定义覆盖图,其中包括摄像头上的两个网格/图案之一"查看"本身。

网格本身是UIImageView中的.png文件,它被添加到叠加层中,它们非常复杂,所以我真的想避免在代码中绘制网格,即使这会现在我对我的问题很干净,很简单。

我希望能够提供各种颜色的网格。显而易见的解决方案是以不同的颜色创建更多.png图像,但是对于每种颜色,必须有四个单独的图像(每个网格的常规图像和视网膜),这样可以快速累加大量资产。

我认为,理想的解决方案是让我只需创建白色/灰色的网格,然后对其应用色调以对其进行适当的着色。

这可能吗?或者我是否需要寻求替代解决方案?

1 个答案:

答案 0 :(得分:8)

感谢Ananth指点我iPhone - How do you color an image?

我已按照问题中的建议将此方法添加到我的代码中,修改了willc2的答案:

-(UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor {
    UIGraphicsBeginImageContext(baseImage.size);

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height);

    CGContextScaleCTM(ctx, 1, -1);
    CGContextTranslateCTM(ctx, 0, -area.size.height);
    CGContextSaveGState(ctx);
    CGContextClipToMask(ctx, area, baseImage.CGImage);
    [theColor set];
    CGContextFillRect(ctx, area);
    CGContextRestoreGState(ctx);
    CGContextSetBlendMode(ctx, kCGBlendModeMultiply);
    CGContextDrawImage(ctx, area, baseImage.CGImage);
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

......而且我完全得到了我之后的信息。