Erlo

移动端cropper.js如何实现裁剪图片并上传(代码分析)

2018-08-31 09:53:24 发布   1819 浏览  
页面报错/反馈
收藏 点赞
原文:http://www.php.cn/js-tutorial-409246.html

本篇文章给大家带来的内容是关于移动端cropper.js如何实现裁剪图片并上传(代码分析) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

引入cropper使用


HTML结构

  • 头像 avatar
  • js引用:
    具体cropper.js 使用可查看官网

    $(function() {
        //修改头像 参加文件https://blog.csdn.net/weixin_38023551/article/details/78792400
        var avatar = document.getElementById('avatar');
        var image = document.getElementById('image');
        var input = document.getElementById('input');
        var $modal = $('#modal');
        var cropper;
        //点击图片
        input.addEventListener('change', function (e) {
            var files = e.target.files;
            var done = function (url) {
                input.value = '';
                image.src = url;
                $modal.show(function() {
                    //初始化
                    cropper = new Cropper(image, {
                        aspectRatio: 1,
                        viewMode:1,
                    });
                });
    
            };
            var reader;
            var file;
            var url;
    
            if (files && files.length > 0) {
                file = files[0];
                if (URL) {
                    done(URL.createObjectURL(file));
                } else if (FileReader) {
                    reader = new FileReader();
                    reader.onload = function (e) {
                        done(reader.result);
                    };
                    reader.readAsDataURL(file);
                }
            }
        });
        //关闭弹窗
        document.getElementById('cancle').addEventListener('click', function () {
            $modal.hide(function() {
                cropper.destroy();
                cropper = null;
            });
        });
        //保存截图
        document.getElementById('crop').addEventListener('click', function () {
            var initialAvatarURL;
            var canvas;
            $modal.hide(function() {
                cropper.destroy();
                cropper = null;
            });
    
            if (cropper) {
                canvas = cropper.getCroppedCanvas({
                    width: 120,
                    height: 120,
                });
                initialAvatarURL = avatar.src;
                avatar.src = canvas.toDataURL('image/jpeg');
                //保存数据
                canvas.toBlob(function (blob) {
                    var formData = new FormData();
                    formData.append('avatar', blob);
                    $.ajax('https://jsonplaceholder.typicode.com/posts', {
                        method: 'POST',
                        data: formData,
                        processData: false,
                        contentType: false,
                        success: function () {
                            console.log('Upload success');
                        },
                        error: function () {
                            avatar.src = initialAvatarURL;
                            console.log('Upload error');
                        }
                    });
                });
            }
        });
    })

    相关推荐:

    怎样实现前端裁剪上传图片功能

    javascript - 如何在手机端实现裁剪图片+上传功能

    登录查看全部

    参与评论

    评论留言

    还没有评论留言,赶紧来抢楼吧~~

    手机查看

    返回顶部

    给这篇文章打个标签吧~

    棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认