在iOS上将SVG转换为任意大小的图像

时间:2012-11-07 05:25:06

标签: ios svg core-graphics vector-graphics

我想在iOS应用程序中使用几个SVG图像,简而言之,我想将SVG图像转换为UIImages(或CGImages)。

我的目标是,我应该能够以.svg文件加载任意大小的图像(假设W / H比正确),并将它们存储为UIImagesCGImages没有任何图像质量损失。 (请注意,这一切都必须在运行时进行,将图像预转换为各种大小的.png文件,并将它们放入App捆绑包中是不可行的选择。)

这可能,如果是这样,我怎么能这样做呢?我对Core Graphics有很好的工作知识,但我以前从未使用过矢量图形。

2 个答案:

答案 0 :(得分:1)

SVGKit可以帮助您 - 此库将SVG呈现到CALayer个实例;从那里,您可以轻松地将图像合成到位图并制作它的CGImage。

答案 1 :(得分:1)

我不建议在大多数情况下将矢量文档转换为位图,但如果必须SVGgh有一个类SVGRenderer,它有一个方法 - (UIImage *)asImageWithSize:(CGSize)maximumSize andScale :( CGFloat )规模将创建一个UIImage。

这是假设SVGgh正确渲染你的SVG,例如它不支持图像效果。

 #import <SVGgh/SVGgh.h>
-(UIImage) imageFromSVGURL:(NSURL*)svgURL withSize:(CGSize)maximumSize andScale:(CGFloat)scale
{
    SVGRenderer* renderer = [[SVGRenderer alloc] initWithContentsOfURL:svgURL];
    return [renderer asImageWithSize:maximumSize andScale:scale];
}