将图像复制到剪贴板

时间:2014-08-02 14:52:02

标签: javascript google-chrome google-chrome-extension

我有一个图像作为DataURL字符串。
我想以编程方式将此图像复制到ClipBoard。

我发现了两个功能,但它们都不起作用。 虽然,第一个功能在复制文本时效果很好 - 复制(“Hello!”,“text”);

PS我有“clipboardWrite”权限。

首先:

function copy(str, mimetype) {
    document.oncopy = function(event) {
        event.clipboardData.setData(mimetype, str);
        event.preventDefault();
    };
    document.execCommand("Copy", false, null);
}

第二

function copyImage(url){
    var img=document.createElement('img');
    img.src=url;
    document.body.appendChild(img);
    var r = document.createRange();
    r.setStartBefore(img);
    r.setEndAfter(img);
    r.selectNode(img);
    var sel = window.getSelection();
    sel.addRange(r);
    document.execCommand('Copy');
}

4 个答案:

答案 0 :(得分:3)

似乎这是不可能的。自2012年以来,Chrome中出现了一个阻止它的错误! https://bugs.chromium.org/p/chromium/issues/detail?id=150835

答案 1 :(得分:0)

您可以使用以下方法将图像转换为字符串:

function getImageData(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);
    var imgd = canvas.toDataURL("image/png");
    return imgd;
}

并且要复制到剪贴板,请尝试使用此page

的解决方案

答案 2 :(得分:0)

如果碰巧使用html2canvas,可以这样操作:
这会将带有html2canvas的内容转换为画布,然后生成其图像,然后将其另存为png。例如,

HTML:
<div id="copyToImage">Hello World!</div>

JavaScript:

$("#copyToImage").click(function() {
    html2canvas(document.querySelector("#copyToImage")).then(canvas => canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({'image/png': blob})])));
});

答案 3 :(得分:-3)

//使用Java Robot将图像复制到ClipBoard

public function getClientAttribute() {
    if ($this->sale) {
        return $this->sale->client;
    }
    return null;
}