Fork me on github

下载图片(未验证)

下载全选的图片

未解决部分:请求图片资源跨域

<el-button type="primary" @@click="downLoadImgs()">图片下载</el-button>*@
 //图片
            downLoadImgs() {
                let arr =
                    [
                    {
                        picName: '图片名字',
                        @* picUrl: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Farticle-fd.zol-img.com.cn%2Ft_s998x562c5%2Fg5%2FM00%2F0A%2F02%2FChMkJltpVKGIQENcAAKaC93UFtUAAqi5QPdcOwAApoj403.jpg&refer=http%3A%2F%2Farticle-fd.zol-img.com.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1639737146&t=96efdde36bc7cd05972cad237e23dae6'*@
                        picUrl:'https://tyzfbj.com/group1/M00/01/07/MejEvGP2yyqAfGUfAAC56LXcPjU934.jpg'
                        }
                ]
                @*for (let i = 0; i < this.imageData.length; i++) {
                    arr.push({
                    picName: '图片名字',
                    picUrl: this.imageData[i].outPutUrl
                    })
                }*@
                this.zip(arr)
            },
zip(arr) {
                var zip = new JSZip()
                // 创建images文件夹
                var imgFolder = zip.folder('images')
                let flag = 0 // 判断加载了几张图片的标识

                for (let i = 0; i < arr.length; i++) {
                @*图片地址为base64*@
                 @*   base64 = arr[i].picUrl.split('base64,')[1]
                    imgFolder.file(arr[i].picName + '.png', base64, { base64: true }) // 自定义图片名字,存进images文件夹里面
                    if (flag === arr.length - 1) {
                        zip.generateAsync({ type: 'blob' }).then((blob) => {
                            saveAs(blob, '跌倒测试图片下载.zip') // 自定义文件压缩包名字
                        })
                    }
                    flag++*@
                    // 遍历数组arr  原来写法
                    this.getBase64(arr[i].picUrl).then((base64) => {
                        console.log('111', base64)// 调用getBase64()方法,传入图片网络地址得到base64数据
                        base64 = base64.split('base64,')[1]
                        imgFolder.file(arr[i].picName + '.png', base64, { base64: true }) // 自定义图片名字,存进images文件夹里面
                        if (flag === arr.length - 1) {
                            zip.generateAsync({ type: 'blob' }).then((blob) => {
                                saveAs(blob, '跌倒测试图片下载.zip') // 自定义文件压缩包名字
                            })
                        }
                        flag++
                    })
                }
            },
// 传入图片地址,返回base64格式数据
            getBase64(img) {
                var image = new Image()
                image.crossOrigin = '*' // 解决图片跨域问题
                image.src = img
                return new Promise((resolve, reject) => {
                    image.onload = () => {
                        resolve(this.getBase64Image(image))
                    }
                })
            },

            // 创建画布,将图片渲染到画布上,再将画布转为base64格式数据返回出来
            getBase64Image(img, width, height) {
                var canvas = document.createElement('canvas')
                canvas.width = width ? width : img.width
                canvas.height = height ? height : img.height
                var ctx = canvas.getContext('2d')
                ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
                var dataURL = canvas.toDataURL()
                return dataURL
            },

 

posted @ 2023-03-08 11:27  我の前端日记  阅读(100)  评论(0编辑  收藏  举报
Copyright © 2021 LinCangHai
Powered by .NET 5.0 on Kubernetes