zoukankan      html  css  js  c++  java
  • html 截图粘粘图片JS

    web前端socket聊天室功能和在线编辑器上传编辑内容的时候经常会需要上传一些图文信息,但是很多编辑器不支持截图粘粘的功能,这里参考了网友分享的可用方法做一个记录。

     1 <html>
     2 <head>
     3     <title>截图粘粘</title>
     4     <style type='text/css'>
     5         #editable {
     6             width: 600px;
     7             height: 400px;
     8             border: 1px dashed red;
     9         }
    10     </style>
    11     <script type="text/javascript">
    12         window.onload = function () {
    13             function paste_img(e) {
    14                 if (e.clipboardData.items) {
    15                     var ele = e.clipboardData.items
    16                     for (var i = 0; i < ele.length; ++i) {
    17                         if (ele[i].kind == 'file' && ele[i].type.indexOf('image/') !== -1) {
    18                             var blob = ele[i].getAsFile();
    19                             window.URL = window.URL || window.webkitURL;
    20                             var blobUrl = window.URL.createObjectURL(blob);
    21                             var new_img = document.createElement('img');
    22                             convertImgToBase64(blobUrl, function(base64Img){
    23                                 new_img.setAttribute('src', base64Img);
    24                                 document.getElementById('editable').appendChild(new_img);
    25                             });
    26                         }
    27                     }
    28                 } else {
    29                     alert('您的浏览器不支持粘贴图片功能,请换更高版本浏览器.');
    30                 }
    31             }
    32             document.getElementById('editable').onpaste = function () {
    33                 paste_img(event);
    34                 return false;
    35             };
    36         }
    37         function convertImgToBase64(url, callback, outputFormat){
    38             var canvas = document.createElement('CANVAS'),
    39                 ctx = canvas.getContext('2d'),
    40                 img = new Image;
    41             img.crossOrigin = 'Anonymous';
    42             img.onload = function(){
    43                 canvas.height = img.height;
    44                 canvas.width = img.width;
    45                 ctx.drawImage(img,0,0);
    46                 var dataURL = canvas.toDataURL(outputFormat || 'image/png');
    47                 callback.call(this, dataURL);
    48                 canvas = null;
    49             };
    50             img.src = url;
    51         }
    52 
    53     //方法2 图片转base64 body监听粘贴
    54     $('body').on('paste', function(e){
    55         alert('1212');
    56         var clipboard = e.clipboardData;
    57         var type = clipboard.items[0].type;
    58         alert('-=-=-');
    59         if (type.match(/image/)) {
    60             var blob = clipboard.items[0].getAsFile();
    61             var file = new FileReader();
    62             file.on('loadend', function(e){
    63                 alert(e.target.result);
    64                 console.log('image',e.target.result);
    65             });
    66             file.readAsDataURL(blob);
    67         } else {
    68             alert(type);
    69             console.log('not an image',type);
    70         }
    71     });
    72     </script>
    73 </head>
    74 <body>
    75 <div id="editable" contenteditable="true">
    76 </div>
    77 </body>
    78 </html>
  • 相关阅读:
    PAT(B) 1037 在霍格沃茨找零钱(Java)
    PAT(B) 1043 输出PATest(Java)统计
    PAT(B) 1063 计算谱半径(Java)
    绘制虚线
    contentMode
    数字签名是什么
    动态设置 button的 name 的话 闪动的问题 解决
    setValuesForKeysWithDictionary 的用法
    获得 当前时间
    iOS 键盘类型
  • 原文地址:https://www.cnblogs.com/laushow/p/9070695.html
Copyright © 2011-2022 走看看