• WebUploader压缩图片上传


    WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档就知道,能满足你所需要的所有功能。

    官方地址:http://fex.baidu.com/webuploader/

    由于项目需求,需要压缩图片上传,于是我找到了这款插件,个人感觉很不错。

    // 初始化Web Uploader
                uploader = WebUploader.create({
    
                    // 自动上传。
                    auto: true,
    
                    // swf文件路径
                    swf:  'webuploader/Uploader.swf',
    
                    // 文件接收服务端。
                    server: 'discern/ceshi/cc',
    
                    // [默认值:'file']  设置文件上传域的name。
                    fileVal:'file',
    
                    // 选择文件的按钮。可选。
                    // 内部根据当前运行是创建,可能是input元素,也可能是flash.
                    pick: '#filePicker',
    
                    //   图片压缩配置参数列表
                    compress:{
                         100,
                        height: 100,
    
                        // 图片质量,只有type为`image/jpeg`的时候才有效。
                        quality: 100,
    
                        // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
                        allowMagnify: false,
    
                        // 是否允许裁剪。
                        crop: false,
    
                        // 是否保留头部meta信息。
                        preserveHeaders: true,
    
                        // 如果发现压缩后文件大小比原来还大,则使用原来图片
                        // 此属性可能会影响图片自动纠正功能
                        noCompressIfLarger: false,
    
                        // 单位字节,如果图片大小小于此值,不会采用压缩。
                        compressSize: 0
                    },
    
                    // 只允许选择文件,可选。
                    accept: {
                        title: 'Images',
                        extensions: 'gif,jpg,jpeg,bmp,png',
                        mimeTypes: 'image/*'
                    }
                });
    
                // 当有文件添加进来的时候  (预览)
                uploader.on( 'fileQueued', function( file ) {
                    var $li = $(
                            '<div id="' + file.id + '" class="file-item thumbnail">' +
                            '<div class="correct"></div><div class="error-icon"></div>'+
                            '<img>' +
                            '<p class="progress"><span style="color: #000"></span></p>'+
                            '<div class="info">' + file.name + '</div>' +
                            '</div>'
                        ),
                        $img = $li.find('img');
    
                    $list.append( $li );
    
                    // 创建缩略图
                    uploader.makeThumb( file, function( error, src ) {
                        if ( error ) {
                            $img.replaceWith('<span>不能预览</span>');
                            return;
                        }
    
                        $img.attr( 'src', src );
                    }, thumbnailWidth, thumbnailHeight );
                });
    
                // 文件上传过程中创建进度条实时显示。
                uploader.on( 'uploadProgress', function( file, percentage ) {
                    var $li = $( '#'+file.id ),
                        $percent = $li.find('.progress span');
    
                    // 避免重复创建
                    if ( !$percent.length ) {
                        $percent = $('<p class="progress"><span></span></p>')
                            .appendTo( $li )
                            .find('span');
                    }
    
                    $percent.css( 'width', percentage * 100 + '%' );
                });
    
                // 文件上传成功,ajax返回data参数
                uploader.on( 'uploadSuccess', function( file,data ) {
                    console.log(file);
                    console.log(data);
                });
    
                // 文件上传失败,现实上传出错。
                uploader.on( 'uploadError', function( file ) {
                    var $li = $( '#'+file.id ),
                        $error = $li.find('div.error');
    
                    // 避免重复创建
                    if ( !$error.length ) {
                        $error = $('<div class="error"></div>').appendTo( $li );
                    }
    
                    $error.text('上传失败!!!');
                });
    
                // 完成上传完了,成功或者失败,先删除进度条。
                uploader.on( 'uploadComplete', function( file ) {
                    $( '#'+file.id ).find('.progress').remove();
                });

    项目亲测这个配置一张5MB左右的图片,经过压缩后只有200kb左右!

  • 相关阅读:
    在Preview中查看man手册
    SVN add file without checkout
    短网址的实现思路
    HTTP 301 与302对于搜索引擎的影响
    解决bitdefender与TortoiseSVN冲突
    在mac中修改主机名
    升级mac os上的maven2至maven3
    访问youtube HTML5测试版本的方法
    Lambda
    107名单。。。
  • 原文地址:https://www.cnblogs.com/duanyue/p/7340657.html
Copyright © 2020-2023  润新知