添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

[Javascript]Svg、Png转Base64大法

使用 Base64 编码的优点:

  1. 减少 HTTP 请求:使用 Base64 编码可以将图像嵌入到 HTML、CSS 或 JavaScript 中,避免了额外的 HTTP 请求,从而提高网站性能。
  2. 减小文件大小:通过使用 Base64 编码,图像文件的大小将增加约 33%,但是,通过避免额外的 HTTP 请求,可以减少响应时间和带宽消耗。
  3. 支持跨域:使用 Base64 编码的图像可以在不同的域中使用,避免了跨域请求的问题。
  4. 简化开发流程:使用 Base64 编码可以简化开发流程,因为你不需要处理图像文件的加载和管理,只需要将其嵌入到 HTML、CSS 或 JavaScript 中即可。
  5. 提高安全性:使用 Base64 编码可以提高安全性,因为你可以避免在网站中包含外部图像文件的风险,例如恶意软件或跟踪像素。

需要注意的是,使用 Base64 编码的图像可能会增加 HTML、CSS 或 JavaScript 文件的大小,因此需要在性能和文件大小之间进行权衡。此外,使用 Base64 编码的图像可能会影响可维护性和可读性,因为你需要将其嵌入到文本中,而不是作为单独的文件进行管理。

根据Svg代码转Base64

const svgToBase64 = (svgCode)=>{
    const base64Code = btoa(svgCode);
    const base64SVG = `data:image/svg+xml;base64,${base64Code}`
    return base64SVG

使用实例:

svgToBase64 (`<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path fill-rule="evenodd" clip-rule="evenodd"
    d="M11.747 1.95918L4.68715 9.43428L0.252441 4.99957L1.66665 3.58536L4.64616 6.56487L10.2929 0.585938L11.747 1.95918Z"
    fill="#004FD6" />
</svg>`)
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxMiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIKICAgIGQ9Ik0xMS43NDcgMS45NTkxOEw0LjY4NzE1IDkuNDM0MjhMMC4yNTI0NDEgNC45OTk1N0wxLjY2NjY1IDMuNTg1MzZMNC42NDYxNiA2LjU2NDg3TDEwLjI5MjkgMC41ODU5MzhMMTEuNzQ3IDEuOTU5MThaIgogICAgZmlsbD0iIzAwNEZENiIgLz4KPC9zdmc+'

根据Png图片路径转Base64

function convertPNGtoBase64(url, callback) {
  const img = new Image();
  img.crossOrigin = 'Anonymous'; // 跨域设置
  img.onload = function() {
    const canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(img, 0, 0);
    const base64PNG = canvas.toDataURL();
    callback(base64PNG);
  img.src = url;

将PNG图片转为Base64编码的函数示例

convertPNGtoBase64('path/to/image.png', function(base64PNG) {
  console.log(base64PNG);
});

根据Dom转Base64

 const myImg = document.getElementById('myImg'); // 获取Img
 // #### Canvas 转 Base64
 function canvasBase64() {
   const canvas = document.getElementById('myCanvas');
   const ImgBase64 = canvas.toDataURL('image/png');
   console.log(ImgBase64, 'Canvas 转 Base64');
   myImg.src = ImgBase64;
 // #### Svg 转 Base64
 function svgBase64() {
   const svg = document.getElementById('mySvg');
   const s = new XMLSerializer().serializeToString(svg);
   const ImgBase64 = `data:image/svg+xml;base64,${window.btoa(s)}`;
   console.log(ImgBase64, 'Svg 转 Base64');
   myImg.src = ImgBase64;
 // #### Svg 转 png
 function svgPng() {
   const svg = document.getElementById('mySvg');
   const s = new XMLSerializer().serializeToString(svg);
   const src = `data:image/svg+xml;base64,${window.btoa(s)}`;
   const img = new Image(); // 创建图片容器承载过渡
   img.src = src;
   img.onload = () => {
     // 图片创建后再执行,转Base64过程
     const canvas = document.createElement('canvas');
     canvas.width = img.width;
     canvas.height = img.height;
     const context = canvas.getContext('2d');
     context.drawImage(img, 0, 0);
     const ImgBase64 = canvas.toDataURL('image/png');
     console.log(ImgBase64, 'Svg 转 png');
     myImg.src = ImgBase64;
				
我们在开发系统时,处理图片上传是不可避免的,例如使用thinkphp的肯定很熟悉import(“@.ORG.UploadFile”);的上传方式,今天我们来讲一个使用html5 base64上传图片的方法。 主要是用到html5 FileReader的接口,既然是html5的,所支持的浏览器我就不多说啦 可以大概的讲一下思路,其实也挺简单。选择了图片之后,js会先把已选的图片化为base64格式,然后通过ajax上传到服务器端,服务器端再化为图片,进行储存的一个过程。 咱们先看看前端的代码。 html部分 <input type=”file” id=”imagesfile”> 我们需要获取目标SVG: var svg = document . querySelector ( 'svg' ) ; 比我们必须创建宽度和高度完全像我们要换的svg的画布: var canvas = document . createElement ( 'canvas' ) ; canvas . width = svg . getBoundingClientRect ( ) . width ; canvas . height = svg . getBoundingClientRect ( ) . height ; body . appendChild ( canvas ) ; ...魔术来了: XMLSerializer.serializeToSt
var canvas=document.getElementById('canvas') var img=document.getElementById('iii) var ctx=canvas.getContext("2d") var height. 随时随地将SVG换为base64 如果像我一样,在开发时使用了大量的SVG,则可能已经到了需要将SVG用作背景图像或嵌入到javascript文件中的地步。 唯一的方法是将SVG文件换为base64字符串,然后在需要时使用它。 该软件包正是这样做的-将SVG换为base64。 该软件包可在浏览器和Node环境中使用。 请继续阅读以了解操作方法。 npm i svg64 yarn add svg64 只需下载此存储库并使用dist文件夹中的文件 或从unpkg.com取消设置 < script src =" https://unpkg.com/svg64 " > </ script > 在浏览器中: // This is your SVG DOM element const svg = document . getElementByI 在使用trans模块decodeImgToBase64函数时发现换出来的编码上传的时候,无法正确显示。当我把换出来的编码放在在线base64照片的时候,提示编码错误,当我对比其他base64编码时发现trans模块decodeImgToBase64少了 data:image/png;base64, 这个开头。
js 将图片换为base64编 前端向后端传输图片等文件数据,经常会将图片或者文章换成base64字符串,再由后端解密base64字符串存储,或直接存储base64字符串。 首先获取input 选择框对象 然后使用 FileReader对象base64 如果成功会调用 reader.onloadend回调函数 <input type="file" class="custom-file-input"> var file = document.querySelector('inpu
#python实现图片base64文件 # 打开图片文件(可以是jpg/png/JPEG格式)为二进制文件 with open("qiaoba.jpg", "rb") as f: # 使用base64进行加密 data = base64.b64encode(f.read()) print(data) # 写到文件中 file = open('qiaoba.py', 'wb') file.write(data)
你可以使用 `html2canvas` 库将 SVG 元素换为 PNG 格式的 base64 编码。以下是一个简单的示例: 1. 首先,将 `html2canvas` 库引入到你的 HTML 文件中: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.2/html2canvas.min.js"></script> 2. 然后,在你的 JavaScript 文件中,使用以下代码将 SVG 元素换为 PNG 格式的 base64 编码: ```javascript // 获取 SVG 元素 const svgElement = document.querySelector('svg'); // 将 SVG 元素换为 Canvas 元素 html2canvas(svgElement) .then(canvas => { // 将 Canvas 元素换为 base64 编码的 PNG 图片 const pngBase64 = canvas.toDataURL('image/png'); console.log(pngBase64); // 打印 base64 编码 这样,你就可以获取 SVG 元素的 PNG 格式的 base64 编码了。