首页 > 其他分享 >js点击图片复制图片

js点击图片复制图片

时间:2023-03-06 15:36:47浏览次数:38  
标签:canvas url image js 点击 复制 blob 图片

 

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>复制</title>
</head>
<body>
<img id="img" width="200" height="200" src="https://img2.baidu.com/it/u=668613382,2066490799&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1659114000&t=05de12239d16f24652090b5d1df4bbfe" alt="">
 
<div class="copy" onclick="copyHandle()">点我复制图片</div>
 
<script>
 
 
  // 复制图片,支持jpg,png
  function copyHandle() {
    let oImg =document.getElementById('img')
    let url = oImg.src;
 
    var canvas = document.createElement('canvas') // 创建一个画板
    let image = new Image()
    image.setAttribute("crossOrigin", 'Anonymous') //可能会有跨越问题
    image.src = url
    image.onload = () => {  // img加载完成事件
      canvas.width = image.width  //设置画板宽度
      canvas.height = image.height //设置画板高度
      canvas.getContext('2d').drawImage(image, 0, 0); //加载img到画板
      let url = canvas.toDataURL("image/png") // 转换图片为dataURL,格式为png
      this.clipboardImg(url) // 调用复制方法
    }
  }
 
  // 从url下载并复制图片,如果是png格式的图片直接调用此方法就能复制成功
  async function clipboardImg(url) {
    try {
      const data = await fetch(url);
      const blob = await data.blob();
      await navigator.clipboard.write([
        new window.ClipboardItem({
          [blob.type]: blob
        })
      ]);
      alert('复制成功')
    } catch (err) {
      alert('复制失败')
    }
  } 
</script>
</body>
</html>

 

标签:canvas,url,image,js,点击,复制,blob,图片
From: https://www.cnblogs.com/xiaoliu66007/p/17184062.html

相关文章

  • NestJS——Serverless(官方文档翻译)
    无服务器计算是一种云计算执行模型,其中云提供商按需分配计算机资源,代表其客户照顾服务器。当应用未使用时,不会为应用分配计算资源。定价基于应用程序(源)消耗的实际资源量。......
  • 好文章!收藏了!————JS学习日志18 -- JS基础--对象引用和复制
                  参考:https://blog.csdn.net/Android_boom/article/details/125099640......
  • selenium+Autolt上传图片(非input属性)
    原理说明:autoit它设计用于WindowsGUI(图形用户界面)中进行自动化操作的一个程序,使用前需要安装,一般网站中图片上传会涉及到点击上传图片按钮就会弹出一个Windows的框用于......
  • JS中创建对象与继承的方法总结
    js中对象的定义与其它面向对象语言不同,它的对象被描述为:一组无序属性的集合,其属性可以包含基本类型值、对象或者函数。而其它面向对象语言中的对象,通常指代可以通过类创建......
  • JS 深拷贝与浅拷贝
    js我们常用赋值的方式进行复制。对常数项来说赋值后的两个变量没有关系,但是变量是对象的话,值会相互影响,这里存在深拷贝与浅拷贝的问题。对象的赋值默认是浅拷贝,A=B,两个值......
  • Node.js 未来发展趋势
    作者:京东零售郑炳懿前言当下,Node.js作为一种异步I/O和事件驱动编程的语言,在前端和后端领域都具有很高的普及度。同时,Node.js作为一个底层运行时环境,使得开发者可以......
  • 《数据万象带你玩转视图场景》第一期:avif图片压缩详解
    前言随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题、带宽问题、加载时延......
  • 使用requestAnimationFrame遍历图片实现动画效果
    关于MDN的描述参考https://developer.mozilla.org/zh-CN/docs/Web/API/window/requestAnimationFrame背景:ui提供了名称compress_00001一直到 compress_00039共40张......
  • JS-表单提交及前端MD5加密问题
    【目标】前端提交密码,通过MD5加密后,浏览器抓包看到的表单信息中,密码是加密后的。【问题】密码加密后输出是加密后的,但是抓包看到的表单数据是明文密码。【问题代码】1......
  • 浅谈js防抖和节流
    防抖和节流是处理高频触发最常见的优化方式,对性能提升有很大的帮助。防抖:将多次的高频操作优化为只在最后一次执行,应用场景如:输入框,只需在最后一次输入进行校验即可。节......