4

我有一个 png 用作另一个图像的图像蒙版。两个图像都有圆角,并通过 resizableImageWithCapInsets: 保留。图像(不是掩码)会自动调整大小,因为它是 UIProgressView 的 progressImage。

我遇到的问题是,如果我使用 CGImageMaskCreate 创建一个蒙版并简单地给它 UIProgressView 的宽度,则蒙版图像被拉伸(即,它不保留大写字母)。

我想做的是创建一个带有可调整大小的帽子的新 UIImage,手动调整图像大小(也许通过将它放在 UIImageView 中),获取调整大小版本的掩码图像的数据表示,然后用它创建一个新图像数据并将该图像用作掩码。不过,似乎即使我用图像创建 UIImageView,然后适当地设置 UIImageView 的框架,将图像从视图中取回也会得到我的原始图像。

有没有办法获得 resizableImageWithCapInsets: 图像的结果,而无需将其实际绘制到 UI 中?

4

2 回答 2

0
- (UIImage*) drawImage:(UIImage *)image
                atSize:(CGSize) size
{
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];

    CGImageRef cgImage = CGBitmapContextCreateImage(context);
    UIImage *outImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);
    UIGraphicsEndImageContext();

    return outImage;
}
于 2013-03-13T09:39:57.943 回答
0

我会尝试将图像逐个绘制到 CGContext 中,您可以在其中访问数据提供者或通过创建 UIImage 提取 NSData

于 2012-08-09T04:58:08.590 回答