• js插件---强大的图片裁剪Cropper


    js插件---强大的图片裁剪Cropper

    一、总结

    一句话总结:官网或者github里面的文档或者demo才是真的详细

    使用的话找到图片裁剪后的base64数据,然后这个数据可下载可传递到服务器

    1、本地运行出现Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported如何解决?

    弄到服务器上面去运行就OK了

    2、如何获取到裁剪后的图片的base64的数据?

    a、首先发现这里提供裁剪好的图片的下载功能,所以知道一定是某段js代码将数据和这个下载的button相关联了

    <a class="btn btn-primary" id="download" href="javascript:void(0);" download="cropped.jpg">

    b、然后去js代码中找这个下载按钮出现的位置,一下子就搜索到了

    24                 console.log(result);
    25                 $('#cropped-modal').modal().find('.am-modal-bd').html(result);
    26                 $('#download').attr('href', result.toDataURL('image/jpeg'));
    27                 console.log(result.toDataURL('image/jpeg'));

    一下子就知道了result.toDataURL('image/jpeg')就是获取裁剪好的图片的base64的数据

    3、如何将canvas转换为base64图片数据?

    这里的result就是canvas,用的toDataURL方法

    27                 console.log(result.toDataURL('image/jpeg'));

    4、如何获取插件完整详细的API和demo?

    官网或者github里面的文档或者demo才是真的详细

    5、如何实现点击下载图片?

    将a标签的href设置为图片的base64数据,那么点击这个a标签就是下载图片

    24                 console.log(result);
    25                 $('#cropped-modal').modal().find('.am-modal-bd').html(result);
    26                 $('#download').attr('href', result.toDataURL('image/jpeg'));
    27                 console.log(result.toDataURL('image/jpeg'));

    并且指定download可以指定下载图片的名字

    二、强大的图片裁剪Cropper

    百度盘下载地址:链接:https://pan.baidu.com/s/1LZtqQyIR-DNjjUDQ3XxK5A 密码:odgt

    1、截图

    2、代码

    index.html

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>Cropper</title>
     6         <link rel="stylesheet" href="../dist/amazeui.min.css">
     7         <link rel="stylesheet" href="../dist/amazeui.cropper.css">
     8         <link rel="stylesheet" href="demo.css">
     9         <script src="../dist/jquery.min.js" charset="utf-8"></script>
    10         <script src="../dist/amazeui.min.js" charset="utf-8"></script>
    11         <script src="../dist/cropper.min.js" charset="utf-8"></script>
    12         <script src="demo.js" charset="utf-8"></script>
    13     </head>
    14     <body>
    15         <div class="am-g">
    16             <div class="am-u-md-9">
    17                 <div class="img-container">
    18                     <img id="image" alt="Picture">
    19                 </div>
    20             </div>
    21             <div class="am-u-md-3">
    22                 <div class="am-img-preview preview-lg am-circle"></div>
    23                 <div class="am-img-preview preview-md am-circle"></div>
    24                 <div class="am-img-preview preview-sm am-circle"></div>
    25             </div>
    26         </div>
    27         <div class="am-g docs-buttons">
    28             <fieldset>
    29                 <legend>头像剪裁 1:1</legend>
    30                 <div class="am-form-group am-form-file">
    31                     <button type="button" class="am-btn am-btn-primary am-btn-sm">
    32                         <i class="am-icon-cloud-upload"></i> 选择要上传的文件
    33                         <input type="file" id="inputImage" name="file" accept="image/*">
    34                     </button>
    35                 </div>
    36                 <div class="am-form-group">
    37                     <div id="file-list"></div>
    38                     <button type="button"
    39                         class="am-btn am-btn-primary am-btn-sm"
    40                         data-method="zoom"
    41                         data-option="0.1">
    42                         <i class="am-icon-search-plus"></i> 放大
    43                     </button>
    44                     <button type="button" class="am-btn am-btn-primary am-btn-sm"
    45                         data-method="zoom"
    46                         data-option="-0.1">
    47                         <i class="am-icon-search-minus"></i> 缩小
    48                     </button>
    49                     <button type="button" class="am-btn am-btn-primary am-btn-sm js-modal-open"
    50                         data-method="getCroppedCanvas">
    51                         <i class="am-icon-camera"></i> 截取图像
    52                     </button>
    53                 </div>
    54             </fieldset>
    55         </div>
    56         <div class="am-modal" tabindex="-1" id="cropped-modal">
    57             <div class="am-modal-dialog">
    58                 <div class="am-modal-hd"> 截取图像
    59                     <a href="javascript: void(0)" class="am-close am-close-spin" data-am-modal-close>&times;</a>
    60                 </div>
    61                 <div class="am-modal-bd"></div>
    62                 <div class="am-modal-footer">
    63                     <a class="btn btn-primary" id="download" href="javascript:void(0);" download="cropped.jpg">
    64                     <button type="button" class="am-btn am-btn-primary">
    65                         <i class="am-icon-download"></i>
    66                             下载
    67                     </button>
    68                     </a>
    69                 </div>
    70             </div>
    71         </div>
    72     </body>
    73 </html>

    demo.js

     1 $(function() {
     2     'use strict';
     3 
     4     // 初始化
     5     var $image = $('#image');
     6     $image.cropper({
     7         aspectRatio: '1',
     8         preview: '.am-img-preview',
     9         zoomOnWheel: false,
    10     })
    11 
    12     // 事件代理绑定事件
    13     $('.docs-buttons').on('click', '[data-method]', function() {
    14         var $this = $(this);
    15         var data = $this.data();
    16         var result = $image.cropper(data.method, data.option, data.secondOption);
    17 
    18         switch (data.method) {
    19 
    20             case 'getCroppedCanvas':
    21             if (result) {
    22 
    23                 // 显示 Modal
    24                 console.log(result);
    25                 $('#cropped-modal').modal().find('.am-modal-bd').html(result);
    26                 $('#download').attr('href', result.toDataURL('image/jpeg'));
    27                 console.log(result.toDataURL('image/jpeg'));
    28             }
    29             break;
    30         }
    31     })
    32 
    33     // 上传图片
    34     var $inputImage = $('#inputImage');
    35     var URL = window.URL || window.webkitURL;
    36     var blobURL;
    37 
    38     if (URL) {
    39         $inputImage.change(function () {
    40             var files = this.files;
    41             var file;
    42 
    43             if (files && files.length) {
    44                file = files[0];
    45 
    46                if (/^image/w+$/.test(file.type)) {
    47                     blobURL = URL.createObjectURL(file);
    48                     $image.one('built.cropper', function () {
    49 
    50                         // Revoke when load complete
    51                        URL.revokeObjectURL(blobURL);
    52                     }).cropper('reset').cropper('replace', blobURL);
    53                     $inputImage.val('');
    54                 } else {
    55                     window.alert('Please choose an image file.');
    56                 }
    57             }
    58 
    59             // Amazi UI 上传文件显示代码
    60             var fileNames = '';
    61             $.each(this.files, function() {
    62                 fileNames += '<span class="am-badge">' + this.name + '</span> ';
    63             });
    64             $('#file-list').html(fileNames);
    65         });
    66     } else {
    67         $inputImage.prop('disabled', true).parent().addClass('disabled');
    68     }
    69 })
     
  • 相关阅读:
    ZOJ 3556
    ZOJ 2836
    HDU 2841
    HDU 4135
    POJ 3695
    POJ 2773
    HDU 4407
    HDU 1796
    ZOJ 3688
    ZOJ 3687
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9588913.html
Copyright © 2020-2023  润新知