我想在iOS应用程序中使用几个SVG图像,简而言之,我想将SVG图像转换为UIImages
(或CGImages
)。
我的目标是,我应该能够以.svg
文件加载任意大小的图像(假设W / H比正确),并将它们存储为UIImages
或CGImages
没有任何图像质量损失。 (请注意,这一切都必须在运行时进行,将图像预转换为各种大小的.png
文件,并将它们放入App捆绑包中是不可行的选择。)
这可能,如果是这样,我怎么能这样做呢?我对Core Graphics
有很好的工作知识,但我以前从未使用过矢量图形。
答案 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];
}