获取resizableImageWithCapInsets的图像数据:调整大小后

时间:2012-05-24 15:09:30

标签: objective-c ios uiimage

我有一个png,我正在用作另一个图像的图像蒙版。两个图像都有圆角,用resizableImageWithCapInsets保存:图像(不是蒙版)是自动调整大小的,因为它是UIProgressView的progressImage。

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

我想要做的是创建一个具有可调整大小的大写的新UIImage,手动调整图像大小(可能通过将其置于UIImageView中),获取调整大小的掩码图像版本的数据表示,然后创建一个新的使用该数据生成图像并将该图像用作蒙版。但是,似乎即使我使用图像创建UIImageView,然后适当地设置UIImageView的帧,将图像从视图中取出也会得到我的原始图像。

有没有办法获得resizableImageWithCapInsets:image的结果,而实际上没有将它绘制到UI中?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
}