用于iOS的UIImage的SVG字符串
我尝试制作一个iOS应用程序,并将GithubAPI与SDWebImage一起使用。下面是获取“用户配置文件图像”的代码 这很有效 但是,当我尝试获取贡献热图图像时,我无法获取贡献热图的图像,因为贡献热图是“SVG字符串” 贡献热图在这里 然后,在研究之后,我尝试了“SVGKit”、“PocketSVG”、“SKUBezierPath+SVG”等等。但是这样的库对于SVG“字符串”不是很好,而是SVG“文件” 我可以通过使用这个URL获得一个热图SVG用于iOS的UIImage的SVG字符串,ios,objective-c,svg,uiimageview,uiimage,Ios,Objective C,Svg,Uiimageview,Uiimage,我尝试制作一个iOS应用程序,并将GithubAPI与SDWebImage一起使用。下面是获取“用户配置文件图像”的代码 这很有效 但是,当我尝试获取贡献热图图像时,我无法获取贡献热图的图像,因为贡献热图是“SVG字符串” 贡献热图在这里 然后,在研究之后,我尝试了“SVGKit”、“PocketSVG”、“SKUBezierPath+SVG”等等。但是这样的库对于SVG“字符串”不是很好,而是SVG“文件” 我可以通过使用这个URL获得一个热图SVG https://github.com/u
https://github.com/users/(here is username)/contributions
这就是结果
我不能将此响应视为UIImage。我还尝试将responseData更改为NSData并转换UIImage,但它也无法正常工作
您能教我如何将“github贡献热图的SVG”视为UIImage吗?包含一个SvgRender类,该类具有init方法initWithString:(NSString*)anSVG您可以使用以这种方式创建的渲染器告诉SVGDocumentView渲染SVG。我写了SVGgh
SvgRender类现在有一个-(UIImage*)asImageWithSize:(CGSize)maximumSize和scale:(CGFloat)scale
方法,该方法将直接创建UIImage
在您的例子中,似乎没有得到完整的SVG文档,因为它缺少XML声明。因此,您可能应该获取该块并将其添加到基本XML前缀中,例如在Swift中:
let xmlPrefix = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"
\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"
let documentString = xmlPrefix + serverImage
let renderer = SVGRenderer(string: documentString)
let image = renderer.asImageWithSize(CGSize(100, 100)), andScale:2.0)
让xmlPrefix=”
"
让documentString=xmlPrefix+serverImage
let renderer=svgrender(字符串:documentString)
设image=renderer.asImageWithSize(CGSize(100100)),比例:2.0)
请注意,我使用\字符来转义所有引号散列标记。我还没有编译这段代码,所以Swift可能有点不对劲 您好,所需字符串的格式是什么,我正在尝试使用您的库。举个例子就好了。感谢该格式是SVG文档。因此,您希望获取从服务器获得的字符串,获取块中的部分,并为其提供一个XML头。我会编辑一下我的回答。这是我做的,但我得到的是一个黑色矩形而不是图像(在浏览器上测试很好)。我有没有一种方法可以在便笺中显示我的代码?ThanksOK我用示例代码和SVG字符串添加了一个新问题。如果你能看看,那就太好了。
let xmlPrefix = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"
\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"
let documentString = xmlPrefix + serverImage
let renderer = SVGRenderer(string: documentString)
let image = renderer.asImageWithSize(CGSize(100, 100)), andScale:2.0)