Tôi rất muốn biết cách tô màu một hình ảnh (ví dụ như tạo màu trắng .png đỏ). Tôi đã thấy các đề xuất khác nhau nhưng không bao giờ xác nhận rằng điều này thực sự có thể. Tôi đã thử điều này:iPhone - Làm thế nào để bạn tô màu một hình ảnh?
-(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]];
Nhưng nó không hoạt động - hình ảnh vẫn còn màu trắng trên màn hình.
Nhưng chính xác thì bạn đang cố gắng làm gì? Bạn đang cố gắng biến tất cả các điểm ảnh có màu trắng hoàn toàn (RGB (255,255,255)) thành màu đỏ? Bạn chỉ muốn thêm một màu đỏ? Là "whiteImage.png" của bạn thực sự chỉ là một hình chữ nhật lớn của tất cả các màu trắng? – Amagrammer
Có, tôi muốn chuyển các pixel màu trắng (hoặc màu xám) thành màu đỏ. Phần trong suốt của png sẽ vẫn trong suốt. whiteImage.png không phải là một hình chữ nhật màu trắng - đó là một hình ảnh của một con vật, ví dụ. –
Có lý do cụ thể nào khiến bạn không thể có phiên bản màu đỏ của cùng một hình ảnh và chuyển đổi giữa chúng khi cần? Hình ảnh màu bi nén rất nhỏ. – Amagrammer