如何将 png 图像转换为内联 svg,通过内联 svg 我的意思是 html 标记路径、多边形、矩形、圆等我不想要 svg 文件,因为我想将 css 应用于这些元素。谢谢
原文由 Shoyeb Sheikh 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将 png 图像转换为内联 svg,通过内联 svg 我的意思是 html 标记路径、多边形、矩形、圆等我不想要 svg 文件,因为我想将 css 应用于这些元素。谢谢
原文由 Shoyeb Sheikh 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我工作过的许多涉及 CMS 的网站上,文件管理器不能很好地处理 SVG。如果我希望能够在文件管理器中存储 SVG 图标或元素,它会被视为图像并通常使用 img 标签输出,限制我想添加的任何样式,例如填充和描边颜色或动画。因此,我在 JavaScript 中创建了一个函数,它可以为我运行整个页面并将这些 img 标签转换为内联 svg:
更多: 支持爱因
const convertImages = (query, callback) => {
const images = document.querySelectorAll(query);
images.forEach(image => {
fetch(image.src)
.then(res => res.text())
.then(data => {
const parser = new DOMParser();
const svg = parser.parseFromString(data, 'image/svg+xml').querySelector('svg');
if (image.id) svg.id = image.id;
if (image.className) svg.classList = image.classList;
image.parentNode.replaceChild(svg, image);
})
.then(callback)
.catch(error => console.error(error))
});
}
这是一个非常简单的函数,它将查询和回调作为参数。您需要做的就是调用该函数并查询要转换的图像,它将遍历每个图像,获取 SVG 并使用 DOMParser 从文件中提取 SVG 数据。之后,它将 id 和 class 属性从图像复制到 SVG 变量,并用 SVG 数据替换图像。
注意: 您可以在此处看到它的实际效果,您会注意到 html 只有一个图像标签,但如果您检查页面,它已被替换为内联 SVG。现在你可以用图形做任何你想做的事了!
随意根据您的需要编辑它,可以复制的不仅仅是 id 和 class 属性,并且在获取数据之前进行测试和检查元素以确保它们是 img 标签可能会很好。
原文由 Ainain 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.4k 阅读✓ 已解决
2 回答829 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答818 阅读✓ 已解决
2 回答753 阅读
1 回答722 阅读✓ 已解决
2 回答1k 阅读
您可以通过将 PNG 图像上传到以下网站将 PNG 图像转换为 SVG;
**1)** https://convertio.co/png-svg/
但是这些网站只会给出没有任何着色的svg路径。您必须使用 CSS 的 fill 属性来为 SVG 的路径着色。为了解释这一点,我将与您讨论以下示例;
我使用第一个网站获取以下保存路径并将其填充为红色;
**输出1:** https://jsfiddle.net/defenderkhan/0bsLdqfp/
如果您没有从一个网站获取一些 SVG 路径,那么您可以使用两个网站获取不同的 SVG 路径,然后您可以按如下方式为它们着色;
**输出2:** https://jsfiddle.net/defenderkhan/t1279pv8/
注意: 颜色填充 CSS 代码将变得更加困难,因为您将转换更多颜色的完整图像。