日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTML > 正文

一文徹底解決HTML5頁面中長(zhǎng)按保存圖片功能

2024-08-26 00:21:31
字體:
供稿:網(wǎng)友

本文詳細(xì)介紹了如何在H5中實(shí)現(xiàn)長(zhǎng)按保存圖片的功能。

長(zhǎng)按保存圖片是現(xiàn)在一些宣傳頁H5中很常見的需求,但是js沒有這樣的能力,所以要么借助android或ios的原生能力,要么用canvas自己畫一個(gè)(截屏),相比較原生成本太高,且必須依賴于app,相對(duì)于流傳性很廣且跨平臺(tái)的H5來說不合時(shí)宜,所以 canvas 成為我們常用的手段。

下面是詳細(xì)的步驟:

1. html2canvas截屏

保存的圖片節(jié)點(diǎn)最好是img標(biāo)簽: 想要截屏的節(jié)點(diǎn)最好是img標(biāo)簽的圖片,經(jīng)測(cè)試如果是 background-image 會(huì)有點(diǎn)模糊,需要特別注意下。

npm i html2canvas --saveimport html2canvas from 'html2canvas';// 想要保存的圖片節(jié)點(diǎn)const dom = document.querySelector('img');// 創(chuàng)建一個(gè)新的canvasconst Canvas = document.createElement('canvas');const width = document.body.offsetWidth;  // 可見屏幕的寬const height = document.body.offsetHeight;  // 可見屏幕的高const scale = window.devicePixelRadio;  // 設(shè)備的devicePixelRadio// 將Canvas畫布放大scale倍,然后放在小的屏幕里,解決模糊問題Canvas.width = width * scale;Canvas.height = height * scale;Canvas.getContext('2d').scale(scale, scale);html2canvas(dom, {  canvas: Canvas,  scale,  useCORS: true,  logging: true,  width: width + 'px',  hegiht: height + 'px',}).then((canvas) => {  const context = canvas.getContext('2d');  // 關(guān)閉抗鋸齒形  context.mozImageSmoothingEnabled = false;  context.webkitImageSmoothingEnabled = false;  context.msImageSmoothingEnabled = false;  context.imageSmoothingEnabled = false;  // canvas轉(zhuǎn)化為圖片  canvas2Image(canvas, canvas.width, canvas.height);});

2. canvas2Image轉(zhuǎn)化為圖片

一般情況下轉(zhuǎn)為jpeg格式就很不錯(cuò)了。

canvas2Image(canvas, canvas.width, canvas.height) {  const retCanvas = document.createElement('canvas');  const retCtx = retCanvas.getContext('2d');  retCanvas.width = width;  retCanvas.height = height;  retCtx.drawImage(canvas, 0, 0, width, height, 0, 0, width, height);  const img = document.createElement('img');  img.src = retCanvas.toDataURL('image/jpeg');  // 可以根據(jù)需要更改格式  return img;}

3. 長(zhǎng)按保存圖片

先實(shí)現(xiàn)一個(gè)長(zhǎng)按的方法,長(zhǎng)按之后把生成的圖片append到body,透明浮在屏幕上。

// 封裝一個(gè)長(zhǎng)按方法longPress(fn) {  let timeout = 0;  const $this = this;  for (let i = 0; i < $this.length; i++) {    $this[i].addEventListener('touchstart', () => {      timeout = setTimeout(fn, 800); // 長(zhǎng)按時(shí)間超過800ms,則執(zhí)行傳入的方法     }, false);    $this[i].addEventListener('touchend', () => {      clearTimeout(timeout); // 長(zhǎng)按時(shí)間少于800ms,不會(huì)執(zhí)行傳入的方法    }, false);  }}// 添加生成的圖片到bodyconst img = canvas2Image(canvas, canvas.width, canvas.height);document.body.appendChild(img);img.style.cssText = "width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;";

4. 完整代碼如下

$.fn.longPress = function(fn) {  let timeout = 0;  const $this = this;  for (let i = 0; i < $this.length; i++) {    $this[i].addEventListener('touchstart', () => {      timeout = setTimeout(fn, 800); // 長(zhǎng)按時(shí)間超過800ms,則執(zhí)行傳入的方法     }, false);    $this[i].addEventListener('touchend', () => {      clearTimeout(timeout); // 長(zhǎng)按時(shí)間少于800ms,不會(huì)執(zhí)行傳入的方法    }, false);  }};$('img').longPress(() => {  saveImg();});saveImg() {  // 想要保存的圖片節(jié)點(diǎn)  const dom = document.querySelector('img');  // 創(chuàng)建一個(gè)新的canvas  const Canvas = document.createElement('canvas');  const width = document.body.offsetWidth;  // 可見屏幕的寬  const height = document.body.offsetHeight;  // 可見屏幕的高  const scale = window.devicePixelRatio;  // 設(shè)備的devicePixelRatio  // 將Canvas畫布放大scale倍,然后放在小的屏幕里,解決模糊問題  Canvas.width = width * scale;  Canvas.height = height * scale;  Canvas.getContext('2d').scale(scale, scale);  html2canvas(dom, {    canvas: Canvas,    scale,    useCORS: true,    logging: true,    width: width + 'px',    hegiht: height + 'px',  }).then((canvas) => {    const context = canvas.getContext('2d');    // 關(guān)閉抗鋸齒形    context.mozImageSmoothingEnabled = false;    context.webkitImageSmoothingEnabled = false;    context.msImageSmoothingEnabled = false;    context.imageSmoothingEnabled = false;    // canvas轉(zhuǎn)化為圖片    const img = canvas2Image(canvas, canvas.width, canvas.height);    document.body.appendChild(img);    img.style.cssText = "width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;";  }}canvas2Image(canvas, width, height) {  const retCanvas = document.createElement('canvas');  const retCtx = retCanvas.getContext('2d');  retCanvas.width = width;  retCanvas.height = height;  retCtx.drawImage(canvas, 0, 0, width, height, 0, 0, width, height);  const img = document.createElement('img');  img.src = retCanvas.toDataURL('image/jpeg');  // 可以根據(jù)需要更改格式  return img;}

剛開始做的時(shí)候也是網(wǎng)上一堆文章亂看,不斷的試錯(cuò),最后愉快的實(shí)現(xiàn)了長(zhǎng)按保存圖片的功能,做完才發(fā)現(xiàn)也很簡(jiǎn)單哈,這篇文章完整的介紹了整個(gè)流程,拿走不謝!

總結(jié)

以上所述是小編給大家介紹的一文徹底解決HTML5頁面中長(zhǎng)按保存圖片功能,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到HTML教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
eeuss一区| 成人ww免费完整版在线观看| 亚洲三级av| 国产一级在线免费观看| 欧美性生交大片免费| www.eeuss影院| 欧美日韩国产页| 中文在线视频| 中文字幕99| 一区二区三区在线|网站| 黄色国产网站在线观看| 亚洲 欧美 中文字幕| 日韩欧美在线视频| 一区二区三区在线播放欧美| 日韩精品视频网站| 日韩中文字幕| 91久久精品在线| 国产高清不卡av| 国产一级一片免费播放| 在线视频色在线| 日韩免费电影网站| 日韩精品在线免费观看视频| 欧美一级搡bbbb搡bbbb| 久久夜色精品国产欧美乱极品 | 亚洲最新永久观看在线| 精品久久久久久无| 久久久精品免费免费| 尤物av一区二区| 中文字幕 欧美日韩| 国产黄色一区| 午夜一区二区三区| 国产欧美日韩中文字幕| 精品日韩av| 日韩在线观看视频一区| 国产在线高潮| 日韩久久在线| 在线观看精品国产| 激情五月综合| 欧美中文字幕在线视频| 成人一区而且| 欧美日韩性视频一区二区三区 | 久久91精品久久久久久秒播| 91久久精品国产91久久| 国产一区 二区 三区一级| 91精品在线视频观看| 免费一级欧美在线观看视频| 日韩一级二级三级精品视频| 亚洲黄色一区二区| 中文精品在线观看| 欧美日韩成人综合| 一级片免费网站| 日本精品在线| 日韩.欧美.亚洲| 久久精品欧美日韩精品| 日韩精品在线第一页| 欧美三级在线视频| 不卡在线一区二区| 久久久久久91| 韩国一区二区av| 中文字幕伊人| 亚洲欧洲国产视频| 91精品在线观| 91精品国产色综合久久不卡蜜臀| 午夜伊人狠狠久久| 欧美日韩高清在线一区| 97视频在线| 中文字幕日韩国产| 中文字幕欧美在线| 日韩中文字幕91| 国产日产一区二区三区| 日韩视频 中文字幕| 日本不卡一区在线| 国产成人精品免费久久久久| 国产蜜臀在线| 中文字幕狠狠干| 91亚洲国产| 日韩欧美国产综合| 国产一级视频| 欧美日韩国产一区| 精品在线观看一区| 日韩视频在线免费看| 国产区在线看| 麻豆一区二区99久久久久| 国产在线视频一区二区| 中文字幕久久av| 欧美三级日韩三级| 中文网丁香综合网| 最近免费中文字幕在线第一页| 欧美一级免费观看| 久久久久久99精品| 国产一区日韩欧美| 欧美 中文字幕| 精品网站999www| 国产嫩草影院久久久久| 中文亚洲免费| eeuss一区| 欧美色视频一区二区三区在线观看| 欧美一级免费看| 欧美成人二区| 在线中文字幕视频| 色综合婷婷久久| 最近中文字幕日韩精品| 亚洲免费精品视频| 日韩久久久精品| 午夜视频在线观看一区| 精品调教chinesegay| 中文字幕在线播放一区| 国产99精品| 不卡在线一区二区| 亚洲欧美中文字幕在线一区| 欧美日韩综合不卡| 欧美三级视频在线| 日韩国产欧美亚洲| 91亚洲国产| 99热最新网址| www.狠狠干| 精品在线一区二区| 日韩欧美亚洲国产一区| 亚洲视频在线观看三级| 欧美三级日韩在线| 亚洲一区精品在线| 日韩精品资源二区在线| 欧美久久在线观看| 丰满少妇一区二区| 国产成人精品免费网站| 亚洲第一网中文字幕| 亚洲成a人片在线www| 日韩 欧美 亚洲| 日韩.欧美.亚洲| 在线观看区一区二| 在线一区av| 欧美中文字幕在线观看视频| 中文天堂在线一区| www.xxxx精品| 国产欧美日韩91| 日韩欧美国产成人精品免费| 精品三区视频| 日韩一级网站| 国产欧美三级| www高清在线视频日韩欧美| 91精品久久久久久久91蜜桃| 91精品免费观看| 77777_亚洲午夜久久多人| 99在线国产| 国产视频二区| 国产网站av| 99综合精品久久| 国产婷婷色一区二区三区| 日韩中文字幕在线播放| 国产免费电影网站入口| 欧美日本精品| www在线视频| 欧美日韩在线综合| 国产欧美自拍一区| www.中文字幕在线观看| 欧美亚洲国产免费| 九一久久久久久| 国产一区久久久| 中文字幕日韩在线观看| 日韩中文字幕| 亚洲福利在线视频| 中文字幕在线播放一区| 日韩三级视频中文字幕| 国产成人精品免费久久久久| 精品视频www| 色综合天天综合网国产成人综合天| 伊人网站在线| 精品人妻二区中文字幕| 亚洲永久字幕| 一区二区中文字幕在线| 日韩在线视频免费观看高清中文| 亚洲永久免费视频| 精品网站999| 在线视频不卡一区二区| av免费网站在线| 国产欧美日韩综合| 国产成人一二三区| 久艹在线视频| 日韩三级视频在线看| 国产成人精品日本亚洲专区61| 亚洲成av人片一区二区密柚| 九色蝌蚪视频在线| 日韩网站中文字幕| 一级日本免费的| 国产久卡久卡久卡久卡视频精品| 日韩免费高清一区二区| 国产精品一区二区三区免费观看| 亚洲三级国产| 亚洲最新永久观看在线| 国产欧美久久久久久久久| 欧美另类专区| 国产在线欧美日韩| 在线日韩精品视频| 精品视频123区在线观看| 欧美日韩国产区| 香蕉精品久久| 日韩在线视频免费观看| 亚洲一区导航| 欧美日韩在线综合| 国产主播中文字幕| 在线一区免费| 国产网站欧美日韩免费精品在线观看| 欧美久久在线| 在线观看91精品国产入口| 精品三级久久| 一区二区三区免费看视频 | 在线不卡一区二区| 日韩欧美不卡视频| av中文资源在线| 一区二区在线观| 国产在线拍偷自揄拍精品| wwwwww在线观看| 欧美中文字幕| 国产卡1卡2卡三卡在线| 一级特黄aaa大片在线观看| 欧美日韩国产中文精品字幕自在自线 | 99精品一级欧美片免费播放| 国产一区激情在线| 中文字幕第一页在线播放| 国产午夜精品全部视频播放| 日韩在线视频二区| 久久久91精品国产| av中文网站| 国产欧美日韩三级| 欧美日韩不卡在线视频| 一区二区91| 91精品国产综合久久久久久漫画| 精品日韩av| 最近中文字幕日韩精品| 日韩三级视频在线看| 中文字幕第一页在线播放| 91精品在线视频观看| 欧美日韩三级在线| 国产aa精品| 日韩精品视频中文在线观看| 欧美日韩精品免费看| 99久久婷婷| 91精品国产综合久久香蕉最新版| 亚洲欧美日本国产专区一区| 久久香蕉av| 中文字幕精品视频| 国产欧美三级| 精品中文字幕在线播放| 免费国产h视频在线观看86| 国产一区久久| 国产一区精品| 91欧美在线视频| 色综合婷婷久久| 欧美日韩在线观看首页| 欧美日韩综合不卡| 亚洲欧美99| 日韩在线小视频| 日韩欧美国产黄色| 99久热re在线精彩视频| 欧美,日韩,国产在线| 日韩在线观看a| 精品国产网站在线观看| 亚洲制服丝袜一区| 欧美日韩精品免费| 91精品视频免费在线观看| 国产黄色在线观看| 国产三级在线| 不卡在线一区二区| 欧美日韩在线看| 在线国产91| 麻豆一区二区99久久久久| 不卡在线一区二区| 免费高清在线一区| 欧美日韩国产成人| 亚洲福利一区二区三区| 亚洲欧洲国产视频| 伊人伊成久久人综合网小说| 亚洲黄在线观看| 亚洲国内精品视频| 亚洲a一级视频| 粉嫩粉嫩芽的虎白女18在线视频| 欧美日韩国产观看视频| 国产黄色在线看| 日韩你懂的电影在线观看| 91精品啪在线观看国产60岁 | 日韩精品欧美在线| 97天天综合网| 国产激情99| 精品激情国产视频| 国产乱国产乱老熟300| 亚洲一区中文字幕在线观看| 久久视频免费看| 亚洲一区在线观看免费| 久久精品女人| 日本亚洲视频在线| 日韩欧美中文视频| 国产欧美综合在线| 91麻豆精品在线| 欧美日韩不卡在线视频| 中文在线第一页| 在线视频不卡一区二区| 日韩中文字幕在线播放| 久久香蕉精品| 91精品国产高清| 日本熟女一区二区| 国产小视频免费在线网址| 在线国产一级| 国产日韩电影| 一区二区精品免费| 日韩免费高清一区二区| 阿v免费在线观看| 国产不卡的av| 午夜一区二区三区| 亚洲高清视频在线| 亚洲成年网站在线观看| 一区二区三区精品99久久| 一区二区三区鲁丝不卡| 精品不卡一区二区| 国产免费久久久| 欧美久久久精品| 日韩三级在线播放| 午夜一区二区三区| 中文 欧美 日韩| 国产日韩精品在线看| aaa欧美日韩| 久久99久久久久| xxxxx性| 五月天久久比比资源色| 国产欧美在线观看| 亚洲视频一二三四| 久久久水蜜桃| 欧洲一级精品| 亚洲欧洲日产国码av系列天堂 | 91精品国产综合久久精品| 日韩 国产 一区| 亚洲成av人片| 黄色国产网站在线观看| 欧美日韩中文字幕在线视频| 91精品国产自产| 国产区视频在线观看| 国产一区在线不卡| 日韩在线视频观看| 中文字幕日韩欧美| 欧美日韩中文字幕视频| 欧美日韩国产综合视频在线观看| 日韩中文字幕亚洲| 国产欧美自拍一区| 欧美亚洲天堂| 国产精品视频福利一区二区| 国产成人精品综合久久久| 精品国产999| 国产九九在线| 中文字幕狠狠干| 欧美日韩国产不卡在线看| www.久久久精品| 天堂在线一区二区三区| 免费在线国产| 日韩精品视频免费| 国产拍揄自揄精品视频麻豆| 欧美三级精品| 亚洲视频色图| 亚洲综合在线中文字幕| 91日韩欧美| 中文字幕 亚洲视频| 日韩字幕在线观看| 一区二区精品| 欧美日韩免费不卡视频一区二区三区| 日韩精品一级| 日韩精品第一区| 中文字幕日韩第一页| 欧美激情一区二区三区在线| 999在线视频| 亚洲三级免费看| 一本一道综合狠狠老| 国产欧美三级| 91精品国产综合久久香蕉最新版| 国产最新在线| 最近高清中文在线字幕在线观看1| 中文字幕第一页在线播放| 青青国产91久久久久久| 久久精品夜夜夜夜久久| 欧美日中文字幕| 在线免费播放av| 国产在线拍偷自揄拍精品| 日韩三级视频在线| 国产永久在线观看| 天天综合天天添夜夜添狠狠添| 久久蜜桃精品| 中文字幕日韩欧美在线视频| 国产成人精品网址| 日韩欧美一级在线| 在线视频三区| 91精品在线观| 日韩精品视频在线看| 午夜av一区二区| 国产91久久久久| 视频一区中文字幕国产| 欧美在线亚洲一区| 欧美日韩视频网站| 欧美一级在线观看| 日韩va亚洲va欧洲va国产| 中文在线а√在线8| 国产劲爆久久| 在线观看91精品国产入口| 国产激情久久|