首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将svg+xml base64转换为UIImage?

如何将svg+xml base64转换为UIImage?
EN

Stack Overflow用户
提问于 2022-01-28 12:26:13
回答 1查看 365关注 0票数 -1

我只是有这样的字符串:

"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjYwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxwYXRoIGlkPSJzdmdfMSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjZmZmIi8+CiAgPHJlY3Qgcng9IjYyIiBzdHJva2Utd2lkdGg9IjEwIiBpZD0ic3ZnXzIiIGhlaWdodD0iMzAzIiB3aWR0aD0iNjI5IiB5PSIxMTIiIHg9IjkxIiBzdHJva2U9IiMwMDAiIGZpbGw9IiNmZmYiLz4KICA8ZGVmcz4KICA8cmVjdCByeT0iNjMiIHJ4PSI2MyIgc3Ryb2tlLXdpZHRoPSIxMCIgaWQ9InJlY3QiIGhlaWdodD0iMTI2IiB3aWR0aD0iMTI2IiB5PSIxNTAiIHg9IjE0MCIgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjZmZmIi8+CiAgPGNsaXBQYXRoIGlkPSJjbGlwIj4KICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVjdCIvPgogICAgPC9jbGlwUGF0aD4KPC9kZWZzPgoKICA8dXNlIHhsaW5rOmhyZWY9IiNyZWN0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iYmxhY2siLz4KICA8aW1hZ2UgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FJQUFBRC9nQUlEQUFBRENrbEVRVlI0bk95ZFhVaFRjUnlHZC9SUUpFSE1WU3BwdFJiWWwwWWZHcWxZTVNnS2pNZ1V2SWt5R3RLY2RKZkVvckpGUVlyV3hReGNRUVcxQzhHaE80WE1ncUNJRWxtME1ZTkZ3VENFR3BSRk9jaWllOEVYM3Z2M3VYM1lPRHo4THM2Qi8va2QwNUdldFMxTUpERUI3RlQ0TTdDMWxoMVlZNkFOMkZ1aExMQ1B5bnFBUFhiMU1MQ2w2OUJ2dTE5ZkF6WVBPREVQeFNKUUxBTEZJbEFzQXNVaVVDd0N4U0pRTEFKejZWY1Q2TWtYZm1BYk8xY0JHNjFZQVd5aXJSN1l2dXFMd0s3SlRRRTduZDRQN0pleE9MQ0ZSY2VCMVdRUktCYUJZaEVvRm9GaUVTZ1dnV0lSS0JhQlloR1lXNWNiUUR2dHU0RDFqZXdEZHMvWlA4Q1d1SXVBdlRsVEJ1eUE3eVN3VnFRZjJPR0NsY0F1c3lXQTFXUVJLQmFCWWhFb0ZvRmlFU2dXZ1dJUktCYUJZaEdZUXpjK0FqMmJPd2RzUjBzcHNET2JEZ0o3enhVR2RuaXpHOWdsK2FlQWRlU2paNUx5WURHd3llYTd3R3F5Q0JTTFFMRUlGSXRBc1FnVWkwQ3hDQlNMUUxFSXpPTFlKNkNUbFU1Z2ExNjlBL2IzNmc1Z2I5dlBBMXUrRzkyRkY0NC9BN1lsTUFoc3dJbm1JNXhCWjJ3MFdRU0tSYUJZQklwRm9GZ0Vpa1dnV0FTS1JhQllCRVpYNmkzUU93TG9qdlpJNndmMDMyUG90UHJjNDFGZzMzaEhnTTAyUGdIMlVud2pzTDJIMERWWDJaSFZaQkVvRm9GaUVTZ1dnV0lSS0JhQlloRW9Gb0ZpRVJqcEp2VGVaMmNFdlcvNnZtRVJzTk1KZEtiOHg0TmVZUE1HMFlhY254UGJnYTNMZEFQYjAzNEMyQzAxZTlGVkFTZm1vVmdFaWtXZ1dBU0tSYUJZQklwRm9GZ0Vpa1ZndEhxalFLZlFvaHJiL2ZwSllFYzlCNEIxUjBQQTlnODFBN3Y0NzNWZy9hZVBBcnZUampaZ1B1eERwNFkwV1FTS1JhQllCSXBGb0ZnRWlrV2dXQVNLUmFCWUJFWW02UVg2elBNVXNITU5QbURqbmlwZ3ZlMXJnYlVLU29EMVAwVjdLaS9IcW9FTlhrRDdNYk5KQzFoTkZvRmlFU2dXZ1dJUktCYUJZaEVvRm9GaUVTZ1dnZWtJTlFFZGZPa0M5b3BaQit6M0N2UjFwRzIxNkp0TnY2dzd3RlorV3cvc1A5ODRzQnM4WGNER1hEbGdOVmtFaWtXZ1dBU0tSYUJZQklwRm9GZ0Vpa1dnV0FUL0F3QUEvLy9yWFpLVzhmMG5SQUFBQUFCSlJVNUVya0pnZ2c9PSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHk9IjE2MCIgeD0iMTYwIiBjbGlwLXBhdGg9InVybCgjY2xpcCkiLz4KCiAgPHRleHQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgdGV4dC1hbmNob3I9InN0YXJ0IiBmb250LWZhbWlseT0iTm90byBTYW5zIEpQIiBmb250LXNpemU9IjI0IiBpZD0ic3ZnXzQiIHk9IjM0MiIgeD0iMTc5IiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMDAwMCI+YXNnZGhqYWdhc2Rqa2FzZGg8L3RleHQ+CiAgPHRleHQgdHJhbnNmb3JtPSJtYXRyaXgoMTguMDU3LCAwLCAwLCA3LjM3MzIsIC04NDI5LjI0LCAtMTkxNS40NSkiIHhtbDpzcGFjZT0icHJlc2VydmUiIHRleHQtYW5jaG9yPSJzdGFydCIgZm9udC1mYW1pbHk9IidEYW5jaW5nIFNjcmlwdCciIGZvbnQtc2l6ZT0iMSIgaWQ9InN2Z183IiB5PSIyOTAuNTEwNjEiIHg9IjQ5Ny4wODEyNyIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2U9IiMwMDAiIGZpbGw9IiNmZmYiPmU8L3RleHQ+CiA8L2c+Cjwvc3ZnPg=="

如何使用UIImage库将其转换为SVGKit

就目前而言,我只使用:

代码语言:javascript
运行
复制
var image: UIImage? {
    guard let imageEncodedString = imageEncodedString else {
        return nil
    }
    return SVGKImage(data: Data(base64Encoded: imageEncodedString))?.uiImage //crash here inside init
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-28 17:21:48

字符串的开头不是base64,这就是它失败的原因。您需要删除第一个data:image/svg+xml;base64,

你有一个数据URI

应该是这样的:

代码语言:javascript
运行
复制
data:[<media type>][;base64],<data>

你目前有:

代码语言:javascript
运行
复制
data:image/svg+xml;base64,theBase64Image

现在,您可以从字符串中删除data:image/svg+xml;base64,

代码语言:javascript
运行
复制
let dataURI = "data:image/svg+xml;base64,theBase64Image"
let base64String = dataURI.replacingOccurrences(of: "data:image/svg+xml;base64,", with: "")

您还可以手动检查hasPrefix()是否具有预期的dataURI。您还可以使用Regex、NSScanner等来完成此操作。

但是,既然您希望在base64中使用SVG,那么hasPrefix()replacingOccurrences(of:with:)就足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70893783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档