//转义后的#等于%23,利用正则表达式,替换所有%23后6位为新的十六进制六位数。
const changeColor = function(url, color){let res = url.replace(/%23[a-zA-Z0-9]{6}/g, color.replace("#", "%23"));//转义后的#等于%23,利用正则表达式,替换所有%23后6位为新的十六进制六位数。return res;}
import { changeColor } from './util'//动态修改svg颜色module.exports = {colorSVG: function (src, color) {return new Promise((resolve, reject) => {wx.getFileSystemManager().readFile({filePath: src,encoding: 'binary',success: res => {let basestr = encodeURIComponent(res.data)var colorStr = 'data:image/svg+xml,' + changeColor(basestr, color);// console.log('-----colorStr: {}', colorStr);resolve(colorStr)},fail: res => {console.log(res)reject('失败')}})})}}
使用的地方
colorSVG(this.data.src, '#FFBA5D').then((res) => {this.setData({imgurl: res})})