Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改base64格式的svg img的颜色?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何更改base64格式的svg img的颜色?

Javascript 如何更改base64格式的svg img的颜色?,javascript,html,css,Javascript,Html,Css,我有一个Svg img,采用base64格式,并试图更改它的颜色。有人对如何做到这一点有什么建议吗?我找到了一些关于元素的信息,但是要解决svgimg位于base64字符串中这一事实,我不知道如何使用它。有人能帮我或给我指出正确的方向吗 首先对使用自定义或外部编码进行base64编码的图像进行解码。然后,您可以编写一个合适的应用程序来应用于解码的svg文件 但有一个问题仍然存在:您尝试了什么?使用Google Chrome将数据uri转换为SVG文件的一个技巧是: 右键单击 svg标签 由La

我有一个Svg img,采用
base64
格式,并试图更改它的颜色。有人对如何做到这一点有什么建议吗?我找到了一些关于
元素的信息,但是要解决
svg
img位于
base64
字符串中这一事实,我不知道如何使用它。有人能帮我或给我指出正确的方向吗


首先对使用自定义或外部编码进行base64编码的图像进行解码。然后,您可以编写一个合适的应用程序来应用于解码的svg文件


但有一个问题仍然存在:您尝试了什么?

使用Google Chrome将
数据uri
转换为SVG文件的一个技巧是:

  • 右键单击
    
    svg标签
    由Lazar Nikolicf从Non项目创建
    ,因为您没有说明是否无法修改原始文件或是否必须在客户端进行修改,我建议

    编程方法:
  • 查找
    条带
    “数据:图像…”
    ,以提取Base64编码的SVG
  • 使用
  • 创建一个元素,仅用于查找
  • 在路径上设置填充
  • 附加新图像或替换当前图像 例子:
    //查找并获取引用
    var innerPath=newSvg.getElementsByTagName('path')[0];
    //设置新颜色
    setAttribute(“fill”,“#FF0000”);
    //显示修改后的图像
    document.body.appendChild(newSvg)
    
    对于简单的单色base64编码SVG,您可以通过调整颜色

    需要应用的过滤器各不相同。由于base64编码的SVG是黑色单色的,因此您首先将其
    反转为白色。然后应用
    sepia
    并适当地将其饱和。最后,通过
    hue rotate
    将现在的黄色调调整为所需的颜色

    img {
      filter: invert(1) sepia(100%) saturate(10000%) hue-rotate(45deg);
    }
    

    这在以下方面对我起了作用:

  • 用于将base64代码转换为SVG,下载该SVG,并根据需要进行编辑
  • 用于将已编辑的SVG转换回base64并复制生成的代码

  • 非常棒的免费站点,为我节省了很多时间。

    我真的不知道如何开始,
    通过添加一个stroke=“#f99”
    。实际上,您添加了
    fill
    。使用内联SVG比将其放在图像标记中更有意义。如果您100%必须使用带有datauri的图像标记,那么您不需要对其进行base64编码,因为SVG是人类可读的?然后选择所有的?