首页 > 其他分享 >前端JS zip打包文件并下载,图片url转base64

前端JS zip打包文件并下载,图片url转base64

时间:2023-06-21 10:58:37浏览次数:48  
标签:canvas zip img url base64 height width

使用jszip这个项目实现的:https://github.com/Stuk/jszip

FileSaver.js项目地址是:https://github.com/eligrey/FileSaver.js/



<script src="./FileSaver.min.js"></script>
<script src="./jszip.min.js"></script>
// 初始化一个zip打包对象
var zip = new JSZip();
// 创建一个被用来打包的名为Hello.txt的文件
zip.file("Hello.txt", "Hello World\n");
// 创建一个名为images的新的文件目录
var img = zip.folder("images");
// 这个images文件目录中创建一个base64数据为imgData的图像,图像名是smile.gif
img.file("smile.gif", imgData, {base64: true});
// 把打包内容异步转成blob二进制格式
zip.generateAsync({type:"blob"}).then(function(content) {
    // content就是blob数据,这里以example.zip名称下载    
    // 使用了FileSaver.js  
    saveAs(content, "example.zip");
});

url转base64

Promise 实现

export function getUrlBase64(url) {
    return new Promise((resolve, reject) => {
        let canvas = document.createElement("canvas");
        const ctx = canvas.getContext("2d");
        let img = new Image();
        img.crossOrigin = "Anonymous"; //解决Canvas.toDataURL 图片跨域问题
        img.src = url;
        img.onload = function () {
            canvas.height = img.height;
            canvas.width = img.width;
            ctx.drawImage(img, 0, 0, img.width, img.height); //参数可自定义
            const dataURL = canvas.toDataURL("image/jpeg", 1); //获取Base64编码
            resolve(dataURL);
            canvas = null; //清除canvas元素
            img = null; //清除img元素
        };
        img.onerror = function () {
            reject(new Error("Could not load image at " + url));
        };
    });
}

回调函数实现

export function getUrlBase64Callback(url, callback) {
    let canvas = document.createElement("canvas"); //创建canvas DOM元素
    const ctx = canvas.getContext("2d");
    const img = new Image();
    img.crossOrigin = "Anonymous";
    img.src = url;
    img.onload = function () {
        canvas.height = img.height;
        canvas.width = img.width;
        ctx.drawImage(img, 0, 0, img.width, img.height);
        const dataURL = canvas.toDataURL("image/jpeg", 1); //可选取多种模式
        callback.call(this, dataURL); //回掉函数获取Base64编码
        canvas = null;
    };
}

标签:canvas,zip,img,url,base64,height,width
From: https://www.cnblogs.com/idolmaster-765pro/p/17495657.html

相关文章

  • 数据库驱动异常:不接受的url异常
    不接受的url异常:Drivercom.mysql.jdbc.DriverclaimstonotacceptjdbcUrl,说明是yml文件的数据库url问题仔细检查url是否有编写错误即可。D:\softTool\Java\jdk1.8.0_281\bin\java.exe-XX:TieredStopAtLevel=1-noverify-Dspring.output.ansi.enabled=always"-javaagent:D......
  • 深度解密 base64 字符串的编解码原理
    什么是base64我们知道一个字节可以表示的范围是0~255,并且在ASCII码表中会对应一个字符,比如:字符97对应字符'a'、90对应字符'Z'等等。而在ASCII码表中有很多字符都是不可见字符,那么当数据在网络上传输时,由于不同设备对字符的处理会有一些不同,那些不可见字符就有可能......
  • intent发起一个url地址以及一个相对布局的使用
    Intentintent=newIntent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.stackoverflow.com"));startActivity(intent);<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_......
  • 适用于MacOS的多合一压缩包管理器Bandizip
    macos解压缩软件哪款好?这里为大家推荐一款智能多合一压缩包管理器Bandizipformac,该软件提供具有拖放功能的直观界面,使创建和提取档案变得容易。它还支持多核处理,这意味着它可以快速高效地处理大型档案。 Bandizip的应用界面设计更加扁平,但并不意味着它有多好的设计感,即便你......
  • js base64编解码
     在JavaScript中,有两个原生支持的函数被分别用来处理解码和编码Base64字符串:btoa():“btoa”应读作“binarytoASCII”,atob():“atob”应读作“ASCIItobinary” varstr='eyJjb2RlIjoyMDAsIm1lc3NhZ2UiOiJPSyJ9'//base64字符串/ASCII字符vardata=atob(st......
  • 2、【java数据安全】base64与报文摘要MD(md5、sha、mac)简单介绍及应用场景、示例
    (文章目录)本文简单的介绍了Base64、消息摘要和其使用示例,并且使用示例以三种不同实现方式及测试本文介绍三种实现方式,即JDK、apachecommons.codec和bouncycastle三种。一、maven依赖<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <......
  • 如何更新或修改Git远程仓库的URL连接
    一、首先,确认你当前已经将本地项目与旧的远程仓库关联起来。运行以下命令查看当前的远程仓库配置: gitremote-v二、git上新创建的远程仓库名称记录下来三、接下来,使用以下命令来更新远程仓库的URL,将 <新的仓库URL> 替换为新的仓库URL,将 <远程仓库名称> 替换为你要更新的远......
  • doris 报错: Insert has filtered data in strict mode, tracking url=
    最近使用doris插入数据时,报了如下错误: Inserthasfiltereddatainstrictmode,trackingurl=点击trackingurl的连接地址,可以查看报错具体详情我的程序报错时因为插入的数据长度超过字段长度,所以需要修改对应字段长度。通过命令进行修改即可ALTERTABLEmy_tableMODI......
  • Base64加密算法以及在IDA中的识别
    Base64加密算法以及在IDA中的识别一、何为Base64算法?Base64是一种基于64个可打印字符来表达二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元。对于某个可打印字符。为什么这样说呢?我们首先了解一下Base64是如何设计的。3个字节有24个比特,在Base64中6个比特一......
  • BUUCTF:zip
    题目地址:https://buuoj.cn/challenges#zip很多压缩包,但是里面的内容非常小,小于5字节,可以尝试使用CRC32爆破得到其内容先以out0.zip做个例子,out0.zip的CRC32校验码为:0x75f90d3aPSD:\Tools\Misc\crc32>python.\crc32.pyreverse0x75f90d3a4bytes:{0x7a,0x35,0x42,0x7a}ve......