【发布时间】:2018-11-02 12:04:09
【问题描述】:
我想制作一张由我拍摄的具有透明背景的图像,并且应该只有图像的边缘。
然后我想改变该图像边缘的颜色。
所以建议我有什么办法可以做到这一点。
谢谢
更新
我的问题不是重复的,因为区别在于:
- 我只想将 svg url 加载到 imageView 而不是 webView
- 加载到图像视图中的 svg 图像的色调应该会发生变化。
【问题讨论】:
我想制作一张由我拍摄的具有透明背景的图像,并且应该只有图像的边缘。
然后我想改变该图像边缘的颜色。
所以建议我有什么办法可以做到这一点。
谢谢
更新
我的问题不是重复的,因为区别在于:
【问题讨论】:
用这个从url上传图片
func download(url:String) {
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0];
let filePath="\(documentsPath)/img.svg"
DispatchQueue.global(qos: .background).async {
if let url = URL(string: "\(url)/img.svg"),
let urlData = NSData(contentsOf: url) {
DispatchQueue.main.async {
urlData.write(toFile: filePath, atomically: true)
print("done")
}
}
}
}
如何使用
download(url: "https://yuordomin.com/nameimge.svg")
【讨论】:
编辑我的回答忽略了您明确想要SVG 图像的方面,对此感到抱歉;不过,您可以将图像转换为 PDF 并使用所描述的方法。
您可以使用UIImage 的renderingMode 属性生成支持设置色调颜色的模板图像。这会将所有不透明的像素解释为“前景”,将被色调着色。
有两种方法:
Render as 设置为Template Image,在资产目录中设置图像的渲染模式。当您使用 UIImage(named:) 加载此图像时,您会自动将其作为模板图像。UIImage 实例时,您可以将其转换为模板图像:let templateImage = image.withRenderingMode(.alwaysTemplate)
在这两种情况下,您都可以使用templateImage.tintColor = yourColor 设置图像的色调颜色。
【讨论】: