问题描述
在前端页面中,需要将图片复制到剪贴板,效果是前往微信、QQ 等应用,粘贴图片,能够直接粘贴出图片本身,而不是图片链接。
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
function copyJpgToClipboard(url) { var canvas = document.createElement('canvas') let image = new Image() image.setAttribute("crossOrigin", 'Anonymous') image.src = url image.onload = () => { canvas.width = image.width canvas.height = image.height canvas.getContext('2d').drawImage(image, 0, 0); let url = canvas.toDataURL("image/png") copyImageToClipboardCallback(url) } }
async function copyImageToClipboardCallback(url) { try { const data = await fetch(url); const blob = await data.blob(); await navigator.clipboard.write([ new window.ClipboardItem({ [blob.type]: blob }) ]); Swal.fire({ title: '图片复制成功', icon: 'success', confirmButtonText: '确定', timer: 1000 }); } catch (err) { console.error(err.name, err.message); Swal.fire({ title: '图片复制失败', text: err.message, icon: 'error', confirmButtonText: '确定', timer: 1000 }); } }
|
其中,第二个函数如果传入的是 png 格式的图片,直接调用即可。如果不是,那么要用第一个函数套一层娃。