Mi piacerebbe sapere come colorare un'immagine (fare un bianco .png rosso, per esempio). Ho visto vari suggerimenti ma mai nessuna conferma che ciò sia effettivamente possibile. Ho provato questo:iPhone - Come colori un'immagine?
-(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, kCGBlendModeNormal);
CGContextDrawImage(ctx, area, baseImage.CGImage);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
myImageView.image = [self colorizeImage:[UIImage imageNamed:@"whiteImage.png"] color:[UIColor redColor]];
Ma non funziona: l'immagine è ancora bianca sullo schermo.
Ma cosa stai cercando di fare esattamente? Stai cercando di trasformare tutti i pixel completamente bianchi (RGB (255,255,255)) in rosso? Vuoi solo aggiungere una tinta rossa? Il tuo "whiteImage.png" è in realtà solo un grande rettangolo di tutto il bianco? – Amagrammer
Sì, desidero trasformare i pixel bianchi (o grigi) in rossi. La parte trasparente del png dovrebbe rimanere trasparente. whiteImage.png non è un rettangolo bianco, ad esempio è un'immagine di un animale. –
C'è una ragione particolare per cui non è possibile avere solo una versione rossa della stessa immagine, e alternare tra loro se necessario? Le immagini bicolori si comprimono molto piccole. – Amagrammer