1

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

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

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

4

2 回答 2

1

SVGKit可以帮助你——这个库将 SVG 渲染到CALayer实例上;由此,您可以轻松地将图像合成为位图并制作 CGImage。

于 2012-11-07T05:48:58.020 回答
1

在大多数情况下,我不建议将矢量文档转换为位图,但如果你必须SVGgh有一个类 SVGRenderer,它有一个方法 -(UIImage*)asImageWithSize:(CGSize)maximumSize andScale:(CGFloat)scale 这将创建一个 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];
}
于 2015-07-14T11:45:30.183 回答