Chciałbym wiedzieć, jak pokolorować obraz (na przykład zrobić biały .png czerwony). Widziałem różne sugestie, ale nigdy nie było potwierdzenia, że jest to rzeczywiście możliwe. Próbowałem tego:iPhone - Jak kolorować obraz?
-(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]];
Ale to nie działa - obraz jest nadal biały na ekranie.
Ale co dokładnie próbujesz zrobić? Czy próbujesz zmienić wszystkie piksele, które są całkowicie białe (RGB (255,255,255)) na czerwony? Czy chcesz tylko dodać czerwony odcień? Czy twój "whiteImage.png" jest właściwie tylko dużym prostokątem wszystkich białych? – Amagrammer
Tak, chcę włączyć białe (lub szare) piksele na czerwono. Przezroczysta część png powinna pozostać przezroczysta. whiteImage.png to nie biały prostokąt - na przykład obraz zwierzęcia. –
Czy istnieje szczególny powód, dla którego nie można po prostu uzyskać czerwonej wersji tego samego obrazu i przełączać między nimi w razie potrzeby? Obrazy dwukolorowe kompresują się bardzo małymi rozmiarami. – Amagrammer