请问js如何获取剪贴板中的图片base64数据?
网友回复
js代码如下:
function retrieveImageFromClipboardAsBase64(pasteEvent, callback, imageFormat){ if(pasteEvent.clipboardData == false){ if(typeof(callback) == "function"){ callback(undefined); } }; var items = pasteEvent.clipboardData.items; if(items == undefined){ if(typeof(callback) == "function"){ callback(undefined); } }; for (var i = 0; i < items.length; i++) { // Skip content if not image if (items[i].type.indexOf("image") == -1) continue; // Retrieve image on clipboard as blob var blob = items[i].getAsFile(); // Create an abstract canvas and get context var mycanvas = document.createElement("canvas"); var ctx = mycanvas.getContext('2d'); // Create an image var img = new Image(); // Once the image loads, render the img on the canvas img.onload = function(){ // Update dimensions of the canvas with the dimensions of the image mycanvas.width = this.width; mycanvas.height = this.height; // Draw the image ctx.drawImage(img, 0, 0); // Execute callback with the base64 URI of the image if(typeof(callback) == "function"){ callback(mycanvas.toDataURL( (imageFormat || "image/png") )); } }; // Crossbrowser support for URL var URLObj = window.URL || window.webkitURL; // Creates a DOMString containing a URL representing the object given in the parameter // namely the original Blob img.src = URLObj.createObjectURL(blob); } } window.addEventListener("paste", function(e){ // Handle the event retrieveImageFromClipboardAsBase64(e, function(imageDataBase64){ // If there's an image, open it in the browser as a new window :) if(imageDataBase64){ // data:image/png;base64,iVBORw0KGgoAAAAN...... console.log(imageDataBase64); } }); }, false);完整的html代码如下:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> ...
点击查看剩余70%