JSFiddle - React, Tailwind, and code Playground
by vijayweb
HTML
<button id="save_canvas">
save
</button> 1. Copy image data into clipboard or press Print Screen <br> 2. Press Ctrl+V (page/iframe must be focused):
<br /><br />
<canvas style="border:1px solid grey;" id="my_canvas" width="300" height="300"></canvas>
JavaScript
var CLIPBOARD = new CLIPBOARD_CLASS("my_canvas", true);
/**
* image pasting into canvas
*
* @param {string} canvas_id - canvas id
* @param {boolean} autoresize - if canvas will be resized
*/
function CLIPBOARD_CLASS(canvas_id, autoresize) {
var _self = this;
var canvas = document.getElementById(canvas_id);
var ctx = document.getElementById(canvas_id).getContext("2d");
//handlers
document.addEventListener('paste', function(e) {
_self.paste_auto(e);
}, false);
//on paste
this.paste_auto = function(e) {
if (e.clipboardData) {
var items = e.clipboardData.items;
if (!items) return;
//access data directly
for (var i = 0; i < items.length; i++) {
if (items[i].type.indexOf("image") !== -1) {
//image
var blob = items[i].getAsFile();
var URLObj = window.URL || window.webkitURL;
var source = URLObj.createObjectURL(blob);
this.paste_createImage(source);
}
}
e.preventDefault();
}
};
//draw pasted image to canvas
this.paste_createImage = function(source) {
var pastedImage = new Image();
pastedImage.onload = function() {
if (autoresize == true) {
//resize
canvas.width = pastedImage.width;
canvas.height = pastedImage.height;
} else {
//clear canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
ctx.drawImage(pastedImage, 0, 0);
};
pastedImage.src = source;
};
}
$("#save_canvas").click(function() {
var canvas = document.getElementById("my_canvas");
alert(canvas);
var dataURL = canvas.toDataURL("image/gif");
var dataString = 'dataURL=' + dataURL;
$.ajax({
url: "imgupload/createpic.php",
type: "POST",
data: dataString,
success: function(data) {
alert(data);
}
});
});