复制JPG和PNG图片到剪切板是否成功实例页面

回到相关文章 »

效果:

jpg格式
png格式

测试区

可以试试在这里粘贴(富文本输入框):

代码:

HTML代码:
<button id="button" type="primary" class="ui-button">复制JPG图片-左</button>
<button id="button2" type="primary" class="ui-button">复制PNG图片-右</button>
<div class="flex">
    <figure>
        <figcaption>jpg格式</figcaption>
        <img id="image" src="./mybook.jpg">
    </figure>
    <figure>
        <figcaption>png格式</figcaption>
        <img id="image2" src="./mybook.png">
    </figure>
</div>
JS代码:
const doCopyImg2Clipboard = async (image, success = () => {}, failure = () => {}) => {
    if (!image || !image.src) {
        return;    
    }
    
    // 需要复制的图片的地址
    const src = image.src;
    // 请求该地址,返回图片的blob数据
    const response = await fetch(src);
    
    // 需要是blob数据格式
    const blob = response.blob();
    
    // 使用剪切板API进行复制
    const data = [new ClipboardItem({
        [blob.type || 'image/' + src.split('.').slice(-1)[0].replace('jpg', 'jpeg')]: blob    
    })];
    
    navigator.clipboard.write(data).then(success, failure);
}

// 点击按钮进行复制
button.addEventListener('click', () => {
    doCopyImg2Clipboard(image, function () {
        new LightTip('复制成功', 'success');
    }, function (err) {
        new LightTip('复制失败:' + err, 'error');
    });
});
button2.addEventListener('click', () => {
    doCopyImg2Clipboard(image2, function () {
        new LightTip('复制成功', 'success');
    }, function (err) {
        new LightTip('复制失败:' + err, 'error');
    });
});