百度上搜索的前6,7条都是转载的同一篇文章, 我试了试不知道为啥完全不行。不知道是我菜还是他们都不带脑子,晕着头就是转,自己也没试一下。
这篇是我找到的其他方式,亲测能用。
将这些代码放到一个js文件中
(function (global) {
global.svgToImg = function (svgHtml) {
this.svgHtml = svgHtml;
global.svgToImg.prototype = {
* svg转图片
* @description
* 1.将svg转base64;
* 2.将base64格式的svg转指定的图片格式并下载
* @param fileName
* 图片名称
* @param imgType
* 图片类型:jpg/png/bmp
change: function (fileName, imgType) {
var This = this;
['version', 1.1],
['xmlns', "http://www.w3.org/2000/svg"],
].forEach(function (item) {
This.svgHtml.setAttribute(item[0], item[1]);
});
var str = This.svgHtml.parentNode.innerHTML;
var img = document.createElement('img');
img.setAttribute('src', 'data:image/svg+xml;base64,' + btoa(unescape(encodeURIComponent(str))));
img.onload = function () {
var canvas = document.createElement('canvas');
var context = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height;
context.drawImage(img, 0, 0);
var canvasData = canvas.toDataURL("image/" + imgType);
var img2 = document.createElement('img');
img2.setAttribute('src', canvasData);
img2.onload = function () {
var a = document.createElement("a");
a.download = fileName + "." + imgType;
a.href = img2.getAttribute('src');
a.click();
}(this));
html代码:
<div id="svgContainer">
<svg width="127px" height="121px" viewBox="0 0 127 121" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
</svg>
</div>
<button onclick="change()">change</button>
<img src="" id="baseSvg" />
</body>
<script>
var svgToImg;
window.onload = function () {
var svg = document.querySelector('svg');
svgToImg = new svgToImg(svg);
function change() {
console.log(11);
svgToImg.change('Marydon', 'jpg');
</script>
svg转成其他图片格式百度上搜索的前6,7条都是转载的同一篇文章, 我试了试不知道为啥完全不行。不知道是我菜还是他们都不带脑子,晕着头就是转,自己也没试一下。这篇是我找到的其他方式,亲测能用。将这些代码放到一个js文件中(function (global) { global.svgToImg = function (svgHtml) { this.svgHtml = svgHtml; }; global.svgToImg.prototype = {
1.遇到需要将svg下载的需求,网上找了一些代码,地址是这个https://github.com/exupero/saveSvgAsPng,但是不太好用,莫名的把网页所有的svg都下载了,于是在源码的基础上做了一些小的修改;代码如下所示
var doctype = '<?xml version=1.0 standalone=no?><!DOCTYPE svg PUBLIC -//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd [<!ENTITY nbsp >]>';
functi
svg2Font
将SVG转换为TTF / EOT / WOFF / WOFF2 / SVG格式。
注意:svg-> svgfont-> ttf ttf-> EOT ttf-> WOFF ttf-> WOFF2 ttf-> svg, ,
Unicode字符平面映射
始末字符值
U + 0000-U + FFFF
基本多文种平面
基本多语言平面,简称BMP
U + 10000-U + 1FFFF
多文种补充平面
补充多语言平面,简称SMP
U + 20000-U + 2FFFF
表意文字补充平面
表意补充平面,简称SIP
npm install -g tosvg
GitHub结帐
$ git clone https://github.com/yfujii01/tosvg.git ~/.tosvg
$ cd ~/.tosvg
$ make
$ tosvg input.png output.svg
要在项目中使用svg-to-img,请运行:
npm install svg-to-img -S
注意:安装svg-to-img时,它将下载保证可与该库一起使用的Chromium的最新版本(〜170Mb Mac,〜282Mb Linux,〜280Mb Win)。
如果您打算在Debian上运行svg-to-img,则需要手动安装以下依赖项:
#! /bin/bash
apt-get update
apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk
我可以回答这个问题。你可以使用Python的svglib库来读取和修改SVG格式的图片,使用svgwrite库来生成新的SVG图片。以下是一个简单的示例代码:
```python
import os
import svgwrite
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
# 批量修改SVG图片
def batch_modify_svg(input_dir, output_dir):
for filename in os.listdir(input_dir):
if filename.endswith(".svg"):
# 读取SVG图片
drawing = svg2rlg(os.path.join(input_dir, filename))
# 修改SVG图片
# ...
# 生成新的SVG图片
svg_filename = os.path.join(output_dir, filename)
svg_drawing = svgwrite.Drawing(svg_filename)
svg_drawing.add(svgwrite.path.Path(d=renderPM(drawing, "svg")))
svg_drawing.save()
# 示例调用
batch_modify_svg("input_dir", "output_dir")
这个示例代码可以批量读取一个目录下的SVG图片,修改图片内容,并生成新的SVG图片到另一个目录下。你可以根据自己的需求修改代码。