Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding a tint to an image

I'm creating an app which uses UIImagePickerController to present a camera to the user with a custom overlay which includes one of two grids/patterns over the camera "view" itself.

The grids themselves are .png files in a UIImageView which is added to the overlay, they're quite complex so I would really like to steer away from drawing the grid in code, even though that would present I nice clean and simple answer to my question.

I would like to be able to offer the grids in a variety of colours. The obvious solution is create more .png images in different colours, but for each colour there would have to be four separate images (regular and retina for each of the grids) so that would quickly add up to a lot of assets.

The solution which, I think, would be ideal, would be for me to just create the grids in white/gray and then apply a tint to it to colour it appropriately.

Is that possible? Or do I need to seek an alternative solution?

like image 335
zeroCube Avatar asked Jun 28 '12 09:06

zeroCube


People also ask

How do you add tint?

A tint is created when you add white to a color and lighten it. It is also sometimes called a pastel color. Tints can range from nearly the full saturation of the hue to practically white. Sometimes artists add a small bit of white to a color to increase its opacity and covering strength.

What does it mean to tint an image?

In color theory, a tint is a mixture of a color with white, which increases lightness, while a shade is a mixture with black, which increases darkness. Both processes affect the resulting color mixture's relative saturation. A tone is produced either by mixing a color with gray, or by both tinting and shading.

How do you add a tint to a picture in Photoshop?

To adjust the tint, select the area from the layer you want to adjust with the Lasso or Magic Wand tools, click "New Adjustment Layer" from the bottom of the Layers window, choose "Photo Filter," select the color tint you want to apply to the image area from the "Filter" drop-down menu and click "OK" to apply the ...


1 Answers

With thanks to Ananth for pointing me to iPhone - How do you color an image?

I've added this method to my code as suggested in the question, with the modification in willc2's answer:

-(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;
}

...and I'm getting exactly what I'm after.

like image 70
zeroCube Avatar answered Sep 28 '22 07:09

zeroCube