/ / Come comprimere l'immagine a livello di codice e trasferirli negli Appunti utilizzando JavaScript? - javascript, tela

Come comprimere l'immagine a livello di codice e trasferirli negli Appunti utilizzando JavaScript? - javascript, tela

Sono nuovo di JavaScript. Negli ultimi giorni ho fatto l'estensione per Chrome, che prende schermate di tutte le schede e trasferisce questi dati negli Appunti. Ogni immagine pesa molto e quindi ho deciso di comprimerle. Ma non funziona. Qualcuno può sapere qual è il problema?

function copyToClipBoard(dataImage){
document.body.appendChild(input);
input.style.position = "fixed";
input.style.opacity = 0;

var newImage = new Image();
newImage.src = dataImage;
console.log (newImage);

var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d").drawImage(newImage, 0, 0);
input.value = canvas.toDataURL("image/jpeg", 0.1);
console.log(input.value);
input.select();
document.execCommand("Copy");
document.body.removeChild(input);
}

risposte:

0 per risposta № 1

Grazie, Kaiido. Ora tutto funziona. Il problema era che l'immagine non aveva il tempo di caricare prima di disegnare.

function copyToClipBoard(dataImage){
document.body.appendChild(input);
input.style.position = "fixed";
input.style.opacity = 0;

var newImage = new Image();
newImage.src = dataImage;
console.log (newImage);

newImage.onload = function(){
var canvas = document.createElement("canvas");
canvas.width = 800;
canvas.height = 500;
var ctx = canvas.getContext("2d").drawImage(newImage, 0, 0, newImage.width, newImage.height, 0, 0, canvas.width, canvas.height);
input.value = canvas.toDataURL("image/jpeg", 0.9);
console.log(input.value);
input.select();
document.execCommand("Copy");
document.body.removeChild(input);
}
}