js实现图片拷贝到剪贴板

最近项目中用到了往剪贴板塞数据的东东,百度了一天,经观察目前js都是往剪贴板中塞入文本数据,针对图片类的数据目前没有办法,所以走条捷径,使用canvas和fsapi进行结合成功往剪贴板中塞入图片数据

思路如下:

1:获取原图的base64编码文件

2:创建画布(可以对原图像裁剪,在这我是对原图像进行裁剪)

3:获取裁剪后的base64

4:利用window.open开启新窗口

5:父节点控制子节点页面,并调用fsapi

具体实现如下:

var targetImg = new Image();
var canvas = document.createElement('canvas');  //创建画图
canvas.width = swidth;  //swidth为裁剪后的图像高度
canvas.height= sheight;
var cxt = canvas.getContext('2d');
cxt.drawImage(targetImg, sx, sy, swidth, sheight, 0, 0, swidth, sheight);//进行裁剪

targetImg.onload = function(){

var clipImage = canvas.toDataURL("image/png",1); //获取裁剪后base64

}

targetImg.src = bolbImage;//原图像的base64



将裁剪后的图像的宽度和高度传递

var htm="<img src='"+PageImage+"' alt='img' />";

var popu =  window.open(openurl,"","width="+iwidth+",height="+iheight+"");

popu.onload = function() {
popu.document.getElementById("img").innerHTML=htm;
if(popu && popu.open && !popu.closed){
popu.captionImage();
}
//进行文件存储
//saveImage(PageImage);
}


这里使用onload,确保子页面能够加载完整,captionImage 方法为子页面进行抓取图片塞入剪贴板的函数

子页面:

创建一个img的div,同时引入fsapi

function captionImage(){
FireShotAPI.copyPage(true);
setTimeout(function(){
window.close();
},1000);

<body>
<div id="img"></div>
</body>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值