JavaScript复制图片和下载图片到本地

基本代码结构

<div className="html-canvas-wrap" ref={canvasWrap}><div className="html-canvas"><h3>标题</h3><p>标题描述</p><img src={TestImg} alt="" /></div><button onClick={handleCopy}>execCommend copy</button><button onClick={handleCopy2}>clipboard copy</button><button onClick={handleSave}>保存图片到本地</button>
</div>

该功能依赖 html2anvas

npm i -S html2canvas

复制图片

execCommand

经测试在大多数社交工具中粘贴不可用

 // 实现 handleCopy 方法const handleCopy = () => {html2canvas(document.querySelector('.html-canvas'), {height: 60,}).then((canvas) => {let imgUrl = canvas.toDataURL('image/png')const image = document.createElement('img')image.src = imgUrlimage.style.height = '60px'image.onload = function () {const selection = window.getSelection()if (selection.rangeCount > 0) {selection.removeAllRanges()}if (!document.queryCommandSupported('copy')) {console.log('浏览器不支持复制命令')return;}const range = document.createRange()range.selectNode(image)selection.addRange(range)document.execCommand('copy')selection.removeAllRanges()}canvasWrap.current.appendChild(image)})}
navigator.clipboard

可用但存在浏览器兼容性问题,主流浏览器中firefox和Safari兼容性不好

 // 实现handleCopy2 方法const getCanvas = (element) =>new Promise((resolve) => {if (canvasRef.current) {return resolve(canvasRef.current)}html2canvas(element, {useCORS: true,}).then((canvas) => {canvasRef.current = canvasresolve(canvas)})})const handleCopy2 = async () => {const canvas = await getCanvas(document.querySelector('.html-canvas'))canvas.toBlob(async (blob) => {const data = [new ClipboardItem({[blob.type]: blob,}),]navigator.clipboard.write(data).then(() => {console.log('Copied to clipboard successfully!')}).catch(() => {console.error('Unable to write to clipboard.')})})
}

保存图片到本地

 // 实现 handleSave 方法const handleSave = async () => {let canvas = await getCanvas(document.querySelector('.html-canvas'))const imgUrl = canvas.toDataURL('image/png')const aEle = document.createElement('a')aEle.download = 'download'aEle.href = imgUrlconst event = new MouseEvent('click')aEle.dispatchEvent(event)}

JavaScript复制图片和下载图片到本地相关推荐

  1. python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例

    1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib. ...

  2. Python利用bs4批量抓取网页图片并下载保存至本地

    Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...

  3. php img本地图片路径,php 替换文章中的图片路径,下载图片到本地服务器的方法

    php 替换文章中的图片路径,下载图片到本地服务器 /** * 获取替换文章中的图片路径 * @param string $xstr 内容 * @param string $oriweb 网址 * @ ...

  4. 使用scrapy图片管道下载图片

    前言 Scrapy是Python语言下一个十分流行的爬虫框架,本文不对Scrapy本身做详细介绍.有关Scrapy的安装可以参考官网的安装指南,不过本人更推荐使用Anaconda,Anaconda集成 ...

  5. 【python】根据pixiv网站的图片url下载图片到本地

    写在前面 pixiv是著名的插画网站.如果我们通过爬虫技术得到了pixiv网站图片的url,那么如何根据url下载图片到本地. 安装模块 pip install requests 测试样例 打开以下页 ...

  6. Python爬虫:批量爬取变形金刚图片,下载保存到本地。

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文文章来自:CSDN 作者:Guapifang 其实和爬取普通数据本质一样,不过 ...

  7. vue生成二维码图片并且下载图片到本地

    一.安装生成二维码插件qrcode.js npm install --save qrcodejs2 二.封装组件: <template><div><div id=&quo ...

  8. JavaScript点击按钮下载图片,涉及同源下载和跨域下载

    以下内容适用于同源下载图片: 参考:https://blog.csdn.net/Thea12138/article/details/82801375 <button class="do ...

  9. 图片去水印下载-图片去水印哪个软件好用

    目前有很多的去水印软件,今天小编要来为大家介绍的两款去水印软件,它不仅可以去除图片上的水印,视频上的水印也是可以去除的.而且操作起来也是非常的简单,即便是完全没有去水印经验的人,也能够快速上手.那么如 ...

最新文章

  1. Azure自动化部署运维浅谈
  2. PHP面试题:windows平台, Apache Http Server启动失败, 排错思路是什么?
  3. 05 MapReduce应用案例02
  4. pycharm常用快捷键详解,让你编程 事半功倍。
  5. java照片墙_基于jQuery实现照片墙自动播放特效
  6. MySQL索引原理、失效情况
  7. python刷新_如何在python中刷新输入流?
  8. 容器编排技术 -- Kubernetes从零开始搭建自定义集群
  9. 一个简易的游戏代码_500 行代码写一个俄罗斯方块游戏
  10. 鸿蒙系统首批机型,华为鸿蒙系统支持的手机型号有哪些 首批公测机型有这些...
  11. 若依集成jsencrypt实现密码加密传输方式
  12. [代码]--GridControl使用技巧总结,更新中...
  13. Openssl crl2pkcs7命令
  14. Java环境安装及环境变量的配置
  15. R语言快速绘制多因素回归分析森林图(1)
  16. pmp项目变更的流程图_【PMP】变更流程图与说明
  17. docker-compose文件内容见下文,报错信息:redis    | Error execut
  18. 语法转换_语法 | 句型转换之陈述句变一般疑问句
  19. aotorun专杀工具(U盘病毒专杀)
  20. Debian7 更换源

热门文章

  1. 关于5037端口的占用解决方法
  2. JAVA正则表达式怎么表达汉字_Java的正则表达式匹配汉字
  3. go 语言垃圾回收 学习01
  4. 雷击导致的电路元件损坏引起的防雷设计电路思考
  5. 高考志愿填报,专业测评科学报考
  6. Flink SQL 的timestamp转成varchar
  7. selenium模拟页面下滑到底部
  8. ionic实现搜索框过滤关键字高亮
  9. 软件设计师---设计模式
  10. 在 IDEA 中使用 Git 图文教程