通过蒙版用颜色填充图像

Fill image with color by mask

我有一张原始车辆图片,我需要用不同的颜色填充它: http://image.openlan.ru/images/25842748100117640420.png

我尝试使用以下代码访问它:

- (UIImage *) coloredImageWithColor:(UIColor *)color
{
    UIGraphicsBeginImageContext(self.size);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(context, 0, self.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGContextSetBlendMode(context, kCGBlendModeDarken);
    CGRect rect = (CGRect){ CGPointZero, self.size };
    CGContextDrawImage(context, rect, self.CGImage);
    CGContextClipToMask(context, rect, self.CGImage);

    [color set];
    CGContextFillRect(context, rect);

    // wheel
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:(CGRect){ 700, 200, 200, 200 }];
    CGContextSetBlendMode(context, kCGBlendModeClear);
    [path fill];

    UIImage *coloredImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return coloredImage;
}

当然这不是我所期望的:

http://image.openlan.ru/images/05312201634158625573.png

目前我遇到了两个问题。首先,我想弄清楚如何在某些区域(例如轮子)显示填充背景。第二个是如何创建最相似的彩色车辆图像。

您将希望在 Photoshop 中完成大部分工作。您需要一个在要显示的地方透明的基础图像。然后你想创建一个遮罩图像来显示你想要颜色的地方(使用 alpha 来指示使用多少色调)。然后您将蒙版图像并将其绘制在背景上。

我假设在您的初始示例中使用了带有图层蒙版的 PhotoShop 文件来创建有色车辆。您需要将这两个层(基础层和蒙版)作为单独的 PNG 文件。创建原始 Photoshop 文件的人应该能够提供这些文件。

尝试从单个平面图像以编程方式执行此操作不太可能给您想要的结果。