资讯专栏INFORMATION COLUMN

分享cropper剪切单张图片demo

番茄西红柿 / 2920人阅读

摘要:上传头像这个一定要设置是容器的大小

DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>上传头像title>
    <link href="https://cdn.bootcss.com/cropper/3.1.3/cropper.min.css" rel="stylesheet">
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <style type="text/css">
        body{
            text-align: center;
        }
        #user-photo {
            width:300px;
            height:300px;
            margin-top: 10px;
        }
        #photo {
            max-width:100%;
            max-height:350px;
        } //这个一定要设置,是容器的大小
        .img-preview-box {
            text-align: center;
        }
        .img-preview-box > div {
            display: inline-block;;
            margin-right: 10px;
        }
        .img-preview {
            overflow: hidden;
        }
        .img-preview-box .img-preview-lg {
            width: 150px;
            height: 150px;
        }
        .img-preview-box .img-preview-md {
            width: 100px;
            height: 100px;
        }
        .img-preview-box .img-preview-sm {
            width: 50px;
            height: 50px;
            border-radius: 50%;
        }
    style>
head>
<body>
<button class="btn btn-primary" data-target="#changeModal" data-toggle="modal">打开button><br/>
<div class="user-photo-box">
    <img id="user-photo" src="">
div>
div>
<div class="modal fade" id="changeModal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×button>
                <h4 class="modal-title text-primary">
                    <i class="fa fa-pencil">i>
                    更换头像
                h4>
            div>
            <div class="modal-body">
                <p class="tip-info text-center">
                    未选择图片
                p>
                <div class="img-container hidden">
                    <img src="" alt="" id="photo">
                div>
                <div class="img-preview-box hidden">
                    <hr>
                    <span>150*150:span>
                    <div class="img-preview img-preview-lg">
                    div>
                    <span>100*100:span>
                    <div class="img-preview img-preview-md">
                    div>
                    <span>30*30:span>
                    <div class="img-preview img-preview-sm">
                    div>
                div>
            div>
            <div class="modal-footer">
                <label class="btn btn-danger pull-left" for="photoInput">
                    <input type="file" class="sr-only" id="photoInput" accept="image/*">
                    <span>打开图片span>
                label>
                <button class="btn btn-primary disabled" disabled="true" onclick="sendPhoto();">提交button>
                <button class="btn btn-close" aria-hidden="true" data-dismiss="modal">取消button>
            div>
        div>
    div>
div>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js">script>
<script src="https://cdn.bootcss.com/cropper/3.1.3/cropper.min.js">script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">script>
<script type="text/javascript">
    var initCropperInModal = function(img, input, modal){
        var $image = img;
        var $inputImage = input;
        var $modal = modal;
        var options = {
            aspectRatio: 1, // 纵横比
            viewMode: 2,
            preview: .img-preview // 预览图的class名
        };
        // 模态框隐藏后需要保存的数据对象
        var saveData = {};
        var URL = window.URL || window.webkitURL;
        var blobURL;
        $modal.on(show.bs.modal,function () {
            // 如果打开模态框时没有选择文件就点击“打开图片”按钮
            if(!$inputImage.val()){
                $inputImage.click();
            }
        }).on(shown.bs.modal, function () {
            // 重新创建
            $image.cropper( $.extend(options, {
                ready: function () {
                    // 当剪切界面就绪后,恢复数据
                    if(saveData.canvasData){
                        $image.cropper(setCanvasData, saveData.canvasData);
                        $image.cropper(setCropBoxData, saveData.cropBoxData);
                    }
                }
            }));
        }).on(hidden.bs.modal, function () {
            // 保存相关数据
            saveData.cropBoxData = $image.cropper(getCropBoxData);
            saveData.canvasData = $image.cropper(getCanvasData);
            // 销毁并将图片保存在img标签
            $image.cropper(destroy).attr(src,blobURL);
        });
        if (URL) {
            $inputImage.change(function() {
                var files = this.files;
                var file;
                if (!$image.data(cropper)) {
                    return;
                }
                if (files && files.length) {
                    file = files[0];
                    if (/^image/w+$/.test(file.type)) {

                        if(blobURL) {
                            URL.revokeObjectURL(blobURL);
                        }
                        blobURL = URL.createObjectURL(file);

                        // 重置cropper,将图像替换
                        $image.cropper(reset).cropper(replace, blobURL);

                        // 选择文件后,显示和隐藏相关内容
                        $(.img-container).removeClass(hidden);
                        $(.img-preview-box).removeClass(hidden);
                        $(#changeModal .disabled).removeAttr(disabled).removeClass(disabled);
                        $(#changeModal .tip-info).addClass(hidden);

                    } else {
                        window.alert(请选择一个图像文件!);
                    }
                }
            });
        } else {
            $inputImage.prop(disabled, true).addClass(disabled);
        }
    }

    var sendPhoto = function(){
        $(#photo).cropper(getCroppedCanvas,{
            width:300,
            height:300
        }).toBlob(function(blob){
            // 转化为blob后更改src属性,隐藏模态框
            $(#user-photo).attr(src,URL.createObjectURL(blob));
            $(#changeModal).modal(hide);
        });
    }

    $(function(){
        initCropperInModal($(#photo),$(#photoInput),$(#changeModal));
    });
script>
body>
html>

 

官方示例 https://fengyuanchen.github.io/cropper/

参考:https://segmentfault.com/a/1190000012344970

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2223.html

相关文章

  • 【jQuery插件分享Cropper——一个简单方便的图片裁剪插件

    摘要:在裁剪框外拖动鼠标会生成一个新的裁剪框。这个是裁剪框的纵横比,默认是不限制的。初始化完成后是否自动显示裁剪框自动显示的裁剪框的大小。方法的使用格式为手动显示裁剪框。 插件介绍 这是一个我在写以前的项目的途中发现的一个国人写的jQuery图像裁剪插件,当时想实现用户资料的头像上传功能,并且能够预览图片,和对图片进行简单的裁剪、旋转,花了不少时间才看到了这个插件,感觉功能挺全面,代码实现起...

    阿罗 评论0 收藏0
  • 截取图片生成头像插件

    摘要:获取图片地址之后,进行截取图片这里推荐一个插件点这里,具体怎么用就不再赘述。等截取图片之后,需要将截取的文件转换为二进制大文件。调取接口,将二进制大文件上传即可。 上传头像插件 目的: 帮助开发者快速开发上传头像功能点 背景: 现在b,g能搜到的头像上传插件并不太好用,所以想提供一个比较自由度的上传并且可以剪切的插件。 资源: 具体资源请查看这里 实现大致思路如下: 先有一个上传的...

    scq000 评论0 收藏0
  • 截取图片生成头像插件

    摘要:获取图片地址之后,进行截取图片这里推荐一个插件点这里,具体怎么用就不再赘述。等截取图片之后,需要将截取的文件转换为二进制大文件。调取接口,将二进制大文件上传即可。 上传头像插件 目的: 帮助开发者快速开发上传头像功能点 背景: 现在b,g能搜到的头像上传插件并不太好用,所以想提供一个比较自由度的上传并且可以剪切的插件。 资源: 具体资源请查看这里 实现大致思路如下: 先有一个上传的...

    Aceyclee 评论0 收藏0
  • JQuery 插件图片裁剪插件cropper.js使用,上传

    摘要:图片裁剪,压缩是上传图片一定会遇到的问题。如何获得裁剪的图片呢获取裁剪后的图片信息首先我们可以获得裁剪框的节点然后调用图片质量图片质量越好图片大小越大这样就得到了你裁剪的图片了可以通过,放到你想要的节点里展示。 图片裁剪,压缩是上传图片一定会遇到的问题。这里把我测试cropper.js这款jquery插件的心得分享一下,可以给新手做参考。 引入插件相关文件,你们down到本地也可以。这...

    SHERlocked93 评论0 收藏0
  • 移动端cropper.js 裁剪图片并上传

    摘要:参考效果引入使用结构头像头像截图弹窗取消截图头像保存引用具体使用可查看官网修改头像参加文件点击图片初始化关闭弹窗保存截图保存数据 参考效果:http://www.17sucai.com/previe... 引入cropper使用 HTML结构 头像 ...

    since1986 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<