gpt4 book ai didi

ios - SVG 字符串到 iOS 的 UIImage

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:47 26 4
gpt4 key购买 nike

我尝试制作一个 iOS 应用程序并将 Github API 与 SDWebImage 结合使用。这是获取“用户配置文件图像”的代码。

[manager GET:@"https://api.github.com/users/(here is your account name)/following?page=1&per_page=100"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSArray *array = [NSJSONSerialization JSONObjectWithData:responseObject
options:NSJSONReadingAllowFragments
error:nil];
for (NSDictionary *dic in array) {
[profileImageArray addObject:[dic valueForKey:@"avatar_url"]];
}

}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];

这很有效。

但是,当我尝试获取 Contribution 热图图像时,我无法获取 Contribution 热图图像,因为 contribution 热图是“SVG String”。

贡献热图在这里。

https://qiita-image-store.s3.amazonaws.com/0/19462/43207385-f3e4-1c96-b288-78802beee357.png

然后,经过研究,我尝试了“SVGKit”、“PocketSVG”、“SKUBezierPath+SVG”等。但此类库不适用于 SVG“字符串”,但适用于 SVG"file"。

我可以使用此 URL 获取贡献热图 SVG

https://github.com/users/(here is username)/contributions

这是结果。

http://i.imgur.com/pqy1FmO.png

我不能将此响应视为 UIImage。我也尝试将 responseData 更改为 NSData 并转换 UIImage,但它也无法正常工作。

您能教我如何将“github 贡献热图的 SVG”视为 UIImage 吗?

最佳答案

SVGgh包含一个 SVGRenderer 类,它有一个初始化方法——initWithString:(NSString*)anSVG——你可以使用以这种方式创建的渲染器来告诉 SVGDocumentView 渲染你的 SVG。我写了 SVGgh。

SVGRenderer 类现在有一个 -(UIImage*)asImageWithSize:(CGSize)maximumSize andScale:(CGFloat)scale 方法,它将直接创建一个 UIImage。

在您的情况下,您似乎没有获得完整的 SVG 文档,因为它缺少 XML 声明。所以你应该把这个 block 添加到一个基本的 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)

请注意,我使用了\字符来转义所有引号。我还没有编译这个片段,所以 Swift 可能有点偏离。

关于ios - SVG 字符串到 iOS 的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com