2012-06-04 54 views
2

我设计iOS版头像制作应用程序和一个我们需要的事情之一是用户可以选择各种风格的眼睛和每只眼睛的虹膜可以的不同的颜色。策略动态地改变颜色的图形资源

下面是一个例子:

Eye color changer

什么将是不必为每一个组合的PNG实现此功能的好策略?有任何想法吗?我对技术方面并不熟悉,但我能想到的一个想法是将每只眼睛的虹膜分别制作成独立的图像,然后对其进行颜色转换。

你会推荐什么?

回答

4

我会建议图像掩码中的代码。

您可以设置两个图层,一个用于眼睛图像,另一个用于虹膜颜色,并在用户点击选择时生成每种颜色。

下面是应该做一个UIImage的伎俩屏蔽码快速位

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
     CGImageGetHeight(maskRef), 
     CGImageGetBitsPerComponent(maskRef), 
     CGImageGetBitsPerPixel(maskRef), 
     CGImageGetBytesPerRow(maskRef), 
     CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 

} 

(从http://mobiledevelopertips.com/cocoa/how-to-mask-an-image.html拍摄)

你不得不每次运行的代码,但由于图像是相当小,它应该无关紧要。如果你想提高性能,你可以写一个好帮手来缓存结果。

0

我测试了它和它的作品。到了这个帖子更全面的,这里是我的实验结果是:

基本映像:

base image


掩模图像:

mask image


结果图像:

result image

(上方格背景的顶部,在为了显示透明度)