我目前正在尝试为客户端创建头像创建iOS应用程序,在某些时候用户应该可以选择更改项目的颜色。
客户端提供要以.png格式着色的图库项目,并照常使用不同的alpha / opacity值,以有效地生成阴影。然而,项目着色的正确最终结果是不掩盖图像并应用颜色混合,因为透明区域保持原样,而是“填充”项目的“外部笔划”所包围的背景区域,然后重新绘制图像。因此阴影适用于新颜色。
这是我取得的成就:
UIImage *image = item.image;
UIGraphicsBeginImageContext(image.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGRect area = CGRectMake(0, 0, image.size.width, image.size.height);
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -area.size.height);
CGContextSaveGState(context);
// This applies the colorization only on the image mask
//CGContextClipToMask(context, area, image.CGImage);
[[UIColor redColor] set];
CGContextFillRect(context, area);
CGContextRestoreGState(context);
CGContextSetBlendMode(context, kCGBlendModeNormal);
CGContextDrawImage(context, area, image.CGImage);
UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
item.image = coloredImg;
产生以下结果。
http://dl.dropbox.com/u/1237004/Screen%20shot%202011-07-15%20at%207.53.50%20%CE%BC.%CE%BC..png
这基本上接近我真正想要达到的目标,除了红色区域扩展到裤子外面。
那么如何消除那部分呢?我想到的可能是将alpha值降低到未由图像掩码定义的区域或类似的区域,但无法接近解决方案。
谢谢大家的建议。
注意:屏幕截图中显示的项目是WeeMee头像创建应用程序的一部分,不是在我们的应用程序中使用,而是我的实验的一部分,并且所有权利属于它的各自所有者
答案 0 :(得分:0)