首页 > 其他分享 >JS复制JPG图片到剪切板

JS复制JPG图片到剪切板

时间:2024-01-24 17:59:46浏览次数:29  
标签:canvas const image naturalWidth JPG JS 复制 剪切板 图片

HTML代码:
<button id="button" type="primary" class="ui-button">复制JPG图片</button>
<img id="image" width="150" src="./mybook.jpg">
JS代码:
const doCopyImg2Clipboard = async (image, success = () => {}, failure = () => {}) => {
    if (!image || !image.src) {
        return;    
    }
    
    // 原图尺寸
    const { naturalWidth, naturalHeight } = image;
    
    if (!naturalWidth) {
        failure('图片尚未成功加载');
        
        return;
    }
    
    // 绘制图片到canvas上
    const canvas = document.createElement('canvas');
    canvas.width = naturalWidth;
    canvas.height = naturalHeight;
    // canvas绘制上下文
    const context = canvas.getContext('2d');
    // 图片绘制
    context.drawImage(image, 0, 0, naturalWidth, naturalHeight);
    // 转为Blob数据
    canvas.toBlob(blob => {
        // 使用剪切板API进行复制
        const data = [new ClipboardItem({
            ['image/png']: blob    
        })];
        
        navigator.clipboard.write(data).then(success, failure);
    });
}
// 点击按钮进行复制 button.addEventListener('click', () => { doCopyImg2Clipboard(image, function () { new LightTip('复制成功', 'success'); }, function (err) { new LightTip('复制失败:' + err, 'error'); }); });  

标签:canvas,const,image,naturalWidth,JPG,JS,复制,剪切板,图片
From: https://www.cnblogs.com/czb1218/p/17985362

相关文章

  • PgSql 行转列的使用 jsonb_each与row_to_json
    PgSql行转列的使用jsonb_each与row_to_json1:正常的几行数据2:转换后3:code(以commodity来分组)select"Id","JabilPn","Brand","PricelnUsd","Commodity"from"Eme_Materials"emwhere"Id"<=3s......
  • idea中启动web、jsp项目
    1.idea打开项目选择要打开的项目的根目录2.项目配置配置jdkmodules配置添加web添加依赖删除爆红的依赖添加依赖目录或者jar配置web.xml配置lib如果没有生成则添加项目所需依赖facets配置和web配置一样配置artifacts3.配置tomcat......
  • js/ts中Date类的ref响应式 -- VUE3
    现象:Date对象无法响应式原因:Date是个深层对象,外面那层可以响应,但是更改里面的层,则不会被侦测到改动解决:强制触发副作用即可参考文档:https://cn.vuejs.org/api/reactivity-advanced.html#triggerref<template><divclass="cnblogs_yucloud">{{DateTime}}</div>......
  • js 旧 IE 中的 innerHTML
    在所有现代浏览器中,通过innerHTML插入的<script>标签是不会执行的。而在IE8及之前的版本中,只要这样插入的<script>元素指定了defer属性,且<script>之前是“受控元素”(scopedelement),那就是可以执行的。<script>元素与<style>或注释一样,都是“非受控元素”(NoScopeelement)......
  • js 自定义数据属性
    HTML5允许给元素指定非标准的属性,但要使用前缀data-以便告诉浏览器,这些属性既不包含与渲染有关的信息,也不包含元素的语义信息。除了前缀,自定义属性对命名是没有限制的,data-后面跟什么都可以。下面是一个例子:<divid="myDiv"data-appId="12345"data-myname="Nicholas"></div>......
  • js 焦点管理
    HTML5增加了辅助DOM焦点管理的功能。首先是document.activeElement,始终包含当前拥有焦点的DOM元素。页面加载时,可以通过用户输入(按Tab键或代码中使用focus()方法)让某个元素自动获得焦点。例如:letbutton=document.getElementById("myButton");button.focus();......
  • js CSS 类扩展
    自HTML4被广泛采用以来,Web开发中一个主要的变化是class属性用得越来越多,其用处是为元素添加样式以及语义信息。自然地,JavaScript与CSS类的交互就增多了,包括动态修改类名,以及根据给定的一个或一组类名查询元素,等等。为了适应开发者和他们对class属性的认可,HTML5增加了......
  • js matches()
    matches()方法(在规范草案中称为matchesSelector())接收一个CSS选择符参数,如果元素匹配则该选择符返回true,否则返回false。例如:if(document.body.matches("body.page1")){//true}使用这个方法可以方便地检测某个元素会不会被querySelector()或querySelectorAll()方......
  • js DOM 扩展
    尽管DOMAPI已经相当不错,但仍然不断有标准或专有的扩展出现,以支持更多功能。2008年以前,大部分浏览器对DOM的扩展是专有的。此后,W3C开始着手将这些已成为事实标准的专有扩展编制成正式规范。本章所有内容已经得到市场占有率名列前茅的所有主流浏览器支持,除非特别说明。Java......
  • python创建json文件并换行
     在Python中,您可以使用内置的json 模块创建和操作JSON文件。以下是如何创建一个JSON文件的步骤:1、Json格式JSON数据的书写格式是键(名称)/值对。JSON值可以是:字符串(在双引号中)、数组(在中括号中)、数字(整数或浮点数)、逻辑值(true或false)、对象(在大括号中)、null。JSON......