日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端实现点击下载图片

發(fā)布時間:2023/12/15 HTML 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端实现点击下载图片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

方法一:使用a標簽的download屬性。

<a href="1.jpg" download="1.jpg">下載圖片</a>

注意:
實現(xiàn)點擊下載的前提是要下載的圖片是同源的,非IE瀏覽器中會直接跳轉(zhuǎn)到該圖片的預覽地址

方法二: vue中點擊觸發(fā)方法下載圖片

<img :src="codeImg" alt="二維碼圖片" style="width:60%;"> <span @click="downloadCodeImg()"></span>引入圖片 import codeIMG from '@/assets/code.jpg';data中,設置圖片變量 data(){codeImg:codeIMG, }downloadCodeimg方法methods: {downloadCodeImg(){console.log('下載圖片')var a = document.createElement('a')a.download = name || 'pic'// 設置圖片地址a.href = codeIMG;a.click();}, }

注意:這里有一個坑。如果你的圖片是從后臺請求過來的,如果你的a標簽的href是IP地址的話,此時a標簽的download屬性會失效,a會被當成一個普通的鏈接使用。

解決方法一:將IP地址換成域名。

解決方法二:通過后端轉(zhuǎn)發(fā),后端請求第三方資源,返回給前端,前端再保存文件。

方法三: canvas與image互轉(zhuǎn)及圖片下載

//canvas轉(zhuǎn)圖片canvasToImage (canvas) {let image = new Image();image.src = canvas.toDataURL('image/png');return image;}//圖片轉(zhuǎn)canvasimageToCanvas (image) {let canvas = document.createElement('canvas');canvas.width = image.width;canvas.height = image.height;canvas.getContext('2d').drawImage(image, 0, 0)}//圖片轉(zhuǎn)化base64var img = "imgurl";//imgurl 就是你的圖片路徑 function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, img.width, img.height); var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase(); var dataURL = canvas.toDataURL("image/"+ext); return dataURL; } var image = new Image(); image.src = img; image.onload = function(){ var base64 = getBase64Image(image); console.log(base64); } //圖片下載imageDownLoad (image) {let aLink = document.createElement('a');aLink.href = image.src;aLink.download = 'test.png';document.body.appendChild(aLink);aLink.click();document.body.removeChild(aLink)}

canvas標簽是可以右鍵保存的,但是這樣還是不夠友好,如果點擊按鈕下載,那就最好不過了
思路:

  • a標簽可以下載資源的
  • 只要把canvas轉(zhuǎn)成base64的格式放在href里就好了

實現(xiàn)1:

<a href="" download="test" id="download">下載</a> <script>var dataURL = canvas.toDataURL("image/png");var a = document.getElementById("download");a.setAttribute("href",dataURL); </script>

實現(xiàn)2:
1.由button觸發(fā)事件 創(chuàng)建一個a標簽
2.a標簽 綁定事件流,觸發(fā)點擊事件

<button onclick="download()">下載</button> <script>var saveFile = function(data, filename){var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');save_link.href = data;save_link.download = filename;var event = document.createEvent('MouseEvents');event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);save_link.dispatchEvent(event);}function download(){var dataURL = canvas.toDataURL("image/png");saveFile(dataURL,'test.jpg');} </script>

方法四: 圖片都轉(zhuǎn)成base64解決跨域問題

方法一:Blob和FileReader 對象
實現(xiàn)原理:
使用xhr請求圖片,并設置返回的文件類型為Blob對象[xhr.responseType = “blob”]
使用FileReader 對象接收blob

<p id="container1"></p><script>getBase64("https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg")function getBase64(imgUrl) {window.URL = window.URL || window.webkitURL;var xhr = new XMLHttpRequest();xhr.open("get", imgUrl, true);// 至關重要xhr.responseType = "blob";xhr.onload = function () {if (this.status == 200) {//得到一個blob對象var blob = this.response;console.log("blob", blob)// 至關重要let oFileReader = new FileReader();oFileReader.onloadend = function (e) {let base64 = e.target.result;console.log("方式一》》》》》》》》》", base64)};oFileReader.readAsDataURL(blob);//====為了在頁面顯示圖片,可以刪除====var img = document.createElement("img");img.onload = function (e) {window.URL.revokeObjectURL(img.src); // 清除釋放};let src = window.URL.createObjectURL(blob);img.src = srcdocument.getElementById("container1").appendChild(img);//====為了在頁面顯示圖片,可以刪除====}}xhr.send();}</script>

方式二:canvas.toDataURL()方法

實現(xiàn)原理:
使用canvas.toDataURL()方法
需要解決圖片跨域問題 image.crossOrigin = ‘’;
使用了Jquery庫的$.Deferred()方法

<p id="container2"></p><script src="https://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script><script>let imgSrc = "https://z649319834.github.io/Learn_Example/video_track/webvtt.jpg";//width、height調(diào)用時傳入具體像素值,控制大小 ,不傳則默認圖像大小function 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;}function getCanvasBase64(img) {var image = new Image();//至關重要image.crossOrigin = '';image.src = img;//至關重要var deferred = $.Deferred();if (img) {image.onload = function () {deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理document.getElementById("container2").appendChild(image);}return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']}}getCanvasBase64(imgSrc).then(function (base64) {console.log("方式二》》》》》》》》》",base64);}, function (err) {console.log(err);});</script>

總結(jié)

以上是生活随笔為你收集整理的前端实现点击下载图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久国产劲爆∧v内射 | 亚洲高清视频在线播放 | 深喉口爆一区二区三区 | 在线免费观看av网 | 色九月婷婷 | 亚洲最大福利网站 | 五月天激情在线 | 茄子视频色 | 极品一区| 在线观看免费av网址 | 激情片 | av午夜天堂 | 黄网站色| 亚洲午夜精品在线 | 黄色小电影网址 | 波多野结衣av在线免费观看 | 91成品视频 | 久热在线视频 | 91精品久久久久久粉嫩 | 国产a级黄色片 | 亚洲国产免费视频 | 99精品视频免费在线观看 | 一区二区蜜桃 | 亚洲在线综合 | 内地毛片| 国产精品xx | 天天摸天天爽 | 婷婷社区五月天 | 1级黄色大片儿 | 日本在线有码 | 免费看91| 欧美狂猛xxxxx乱大交3 | 久久久久久久国产精品毛片 | 国产一区二区三区久久 | 最近2019中文字幕大全第二页 | 99久久久无码国产精品免费蜜柚 | 永久免费看片 | 亚洲天堂影视 | 国产91精品久久久 | 国产精品久久二区 | 天天躁日日躁狠狠躁av | 午夜精品少妇 | 人妻丰满熟妇aⅴ无码 | 人妻内射一区二区在线视频 | 开心色站 | 一区二区欧美日韩 | 免费看毛片网站 | 东北老女人av | 日本久久久久久 | 午夜影院在线观看免费 | 天天燥日日燥 | 亚洲黄网在线 | 先锋影音亚洲 | 巨乳动漫美女 | 欧美人性生活视频 | 欧美a在线观看 | 九九热最新视频 | 一二三区不卡 | 五月婷婷操 | www视频在线免费观看 | 久久久精品人妻一区二区三区 | 欧美日韩一卡 | 精品国产免费观看 | 已满十八岁免费观看全集动漫 | 国产激情免费视频 | 97国产| 视色av| 欧美.www| 天天摸天天看 | 五月天看片 | 91精品久久久久久久99蜜桃 | 亚洲一卡二卡三卡四卡 | 琪琪五月天 | 精品视频在线观看一区二区 | 视频在线观看你懂的 | 黄色资源网 | 日韩狠狠操 | 久久久久久久一区 | 91av中文字幕 | 久久成人人人人精品欧 | 一级淫片免费 | 国产网站免费观看 | 无码人妻精品一区二区 | 欧美日韩综合视频 | 综合成人| 国产裸体永久免费视频网站 | 黄色录像大片 | 欧美日韩一区二区三区四区 | av永久免费 | 无码人妻精品一区二区三区9厂 | 日韩sese | 国产精品高潮呻吟AV无码 | 成人影片在线播放 | 中文字幕日韩欧美一区二区三区 | 影音先锋在线视频观看 | 大色综合 | 草久在线 | 欧美成人a∨高清免费观看 国产精品999视频 | avt天堂网|