html5 前端图片处理(预览、压缩、缩放)

现在手机图片是越来越大了,上传图片流量耗费巨大。同时预览也是一个问题,所以利用HTML5 file和canvas来解决这个问题。

 

var upload = {
    _o: null,//对象id
    _auto: true,//是否自动上传
    _yl: false,//预览
    _ylFun: null,//预览回调函数
    _ys: 100,//压缩 (1-100)100不压缩
    _sf: 100,//缩放(1-100)100不缩放

    img: null,
    mImg: null,

    init: function (o, auto, yl, ylFun, ys, sf) {
        this._o = o;
        if (auto != undefined) this._auto = auto;
        if (yl != undefined) this._yl = yl;
        if (ylFun != undefined) this._ylFun = ylFun;
        if (ys != undefined) this._ys = ys;
        if (sf != undefined) this._sf = sf;

        this.click();
    },
    click: function () {
        var o = document.getElementById(this._o);
        o.addEventListener('change', this.change, false);
    },
    change: function () {
        var oFile = this.files[0];
        var FileInfo = {
            name: oFile.name || oFile.fileName,
            type: oFile.type || oFile.fileType,
            size: oFile.size || oFile.fileSize,
            modTime: oFile.lastModified,
            blob: oFile
        };

        // Android下读不到type信息,从文件名中解析    
        if (!FileInfo.type) {
            var ext = FileInfo.name.split(".").pop().toLowerCase();
            if (ext == 'jpg') { sFileType = 'image/jpeg'; }
            else { sFileType = 'image/' + ext;}
        }
        // 读取文件大小、修改时间等信息    
        var rFilter = /^(image\/jpeg|image\/png|image\/gif|image\/bmp)$/i;
        if (!rFilter.test(FileInfo.type)) {
            return;//非图片
        }

        var oImg = document.createElement('img');
        // 使用FileReader读取
        var oReader = new FileReader();
        oReader.onload = function () {
            var sBase64 = this.result;
            // 部分Android下base64字符串格式不完整    
            if (window.gIsAndroid && sBase64.indexOf("data:image/") != 0) {
                sBase64 = sBase64.replace("base64,", FileInfo.type + ";base64,");
            }
            oImg.src = sBase64;
            upload.img = oImg;
            if (upload != 100) {
                upload.img = upload.compress(FileInfo.type);
            }
            if (upload._yl) {
                upload._ylFun(upload.img);
            }
            sBase64 = null;
        }
        oReader.readAsDataURL(oFile);
    },
    compress: function (mime_type) {
        var cvs = document.createElement('canvas');
        //naturalWidth真实图片的宽度
        var w = this.img.naturalWidth * this._sf / 100;
        var h = this.img.naturalHeight * this._sf / 100;
        cvs.width = w;
        cvs.height = h;

        var ctx = cvs.getContext("2d");
        ctx.drawImage(this.img, 0, 0, w, h);
        var newImageData = cvs.toDataURL(mime_type, this._ys / 100);
        var result_image_obj = new Image();
        result_image_obj.src = newImageData;
        return result_image_obj;
    }
};

 

 

html代码

    <input type="file" id="upload" />

    <script src="js/zepto.min.js"></script>
    <script src="js/upload.js"></script>
    <script type="text/javascript">
        $(function () {
            upload.init('upload', false, true, function (e) {
                $('#upload).before(e);
            },100,50);
        });
    </script>

 

转载于:https://www.cnblogs.com/deeround/p/4886577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(由于上传限制,此软件共分为9个压缩文件,请分别下载解压。此控件适用于vb/vb.net/C#等主流开发语言,且随控件带有,控件应用源代码) 大名鼎鼎的ComponentOne Studio 2013V1版全套控件,内包含ComponentOne Ultimate、ComponentOne Studio Enterprise、ComponentOne Studio for Windows Forms、ComponentOne Studio for ASP.NET Wijmo、ComponentOne Studio for Silverlight、ComponentOne Studio for WPF、ComponentOne Studio for WinRT XAML,以及ComponentOne2013V1产品白皮书.pdf、葡萄城控件宣传册.pdf。不过最最重要是内含 注册机 ,呵呵,你懂得! 最常用功能简介 SizerOne 通过这一4合1的构建集合ezai您的应用程序中增加、标签和parsing的功能。 SizerOne是VS-OCX的最新版,包含两个构件,可处理简单和复杂的,一个可创建笔记本型和Outlook型的标签,以及一个用于自动对字符串进行parsie的parsing构件。 其他的功能允许您更快递设计网格和表单、在子控件中增框架、灰度图片等。 True DataControl 在您的桌面和网络应用程序的数据源中指定业务逻辑。 True DataControl 是一个ActiveX 控件,可作为OLE DB/ADO 数据源来创建应用程序。 它不仅仅是数据源,还是一个具备逻辑的数据源—可替换MS ADO 数据控件等标准数据源—允许程序员在数据源中将业务逻辑指定为一套业务规则,从而使应用程序更耐用、可扩展和可管理。 True DBGrid Pro 在您的应用程序中加入强大的数据绑定网格。 True DBGrid Pro (由ComponentOne及以前的APEX 软件公司开发)允许最终用户以列表格式浏、编辑、添加和删除数据。 True DBGrid Pro 可对数据库的界面进行全面管理,使程序员把精力集中在与应用程序有关的重要任务上。 True DBGrid Pro 还可以通过程序员自己的数据源用于非绑定或存储模式。 True DBInput Pro 收集准确、格式化的用户输入。 True DBInput Pro 集成了8个高质量、面向数据的ActiveX 输入控件和5个可为程序员提供所需工具的对象,以创建企业范围内的互联网/内部网前端数据库应用。 这些强化的控件可替换Visual Basic的文本、日历、屏蔽、编辑框和框架控件来进行数据的输入,并可为金融应用程序增加定制的对象。 True DBList Pro 在您的应用程序中加入多列列表和组合框。 True DBList Pro 是一个由两个面向数据的ActiveX构件套,可为您的应用程序提供耐用的数据访问、数据表示和用户界面功能,使其能像网格一样运行,但却对列表有轻量化的要求。 功能包括对原始OLE DB和 ADO的支持、格式化的和打印、多列排序和搜索、导出为HTML等。 ComponentOne WebChart (包括表单) 为动态服务器页(ASP)创建独立于浏器的动态表单。 True WebChart是一个企业图表工具,允许您开发图表或图形,并作为JPEG或PNG文件应用于任何浏器。 你还可以将表单用作ActiveX控件,以便让最终用户对图表样式和数据的值进行更改。 True WebChart 具有两个服务器端的图表构件- 1个用于2D图表,另一个用于3D构件。 ASP 的web服务器可进行图表的创建并将完整的图表和图形发送到服务器。 VSFlexGrid Pro 增加灵活的网格,以显示列表数据。 VSFlexGrid Pro是对随Visual Basic附带的MSFlexGrid 的升级,可向您提供全范围的功能,以便为数据库应用程序创建灵活、强大的前端。 用一系列新方法在您的Windows、互联网或内部网项目中对动态数据的显示和表示进行定制化,以进行显示、编辑、格式化、组织、汇总和列表数据的打印。 VSSPELL 为任何Visual Basic 应用程序增加拼写检查和同义词词典功能。 VSSPELL 是一个定制化的库,由vsSpell和 vsThesaurus组成。 只需将控件置于您的表单中,您的最终用户即可立即拥有收录25万多个美国英语单词的VSSPELL字典的功能。 该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,以便显示或导出。 VSVIEW 允许您在创建表格时将文本进行多列格式化,包括增加表头、页脚、文本框、边框和文本环绕等。 您可以对图片、嵌入的RTF字符串进行渲染并导出到RTF或HTML中。 您甚至还可以在您的应用程序中增加所见即所得的,提供无级略图及页面的并排。 用户可完全控制和页面的方向。 ComponentOne Query 可在您的应用程序中加入临时查询功能并可被用户直接使用。 ComponentOne的查询构件是一个基于COM,用于应用程序集成的构件,您的最终用户无需为此学习新的技能。 该构件与强大的查询生成引擎、查询引擎和schema 设计器完全兼容。 功能包括: 支持SQL数据库、 Simple DataSource 模式、 内置模块、可定制用户界面、层叠文件夹结构、价值编辑等。
(由于上传限制,此软件共分为9个压缩文件,请分别下载解压。此控件适用于vb/vb.net/C#等主流开发语言,且随控件带有,控件应用源代码) 大名鼎鼎的ComponentOne Studio 2013V1版全套控件,内包含ComponentOne Ultimate、ComponentOne Studio Enterprise、ComponentOne Studio for Windows Forms、ComponentOne Studio for ASP.NET Wijmo、ComponentOne Studio for Silverlight、ComponentOne Studio for WPF、ComponentOne Studio for WinRT XAML,以及ComponentOne2013V1产品白皮书.pdf、葡萄城控件宣传册.pdf。不过最最重要是内含 注册机 ,呵呵,你懂得! 最常用功能简介 SizerOne 通过这一4合1的构建集合ezai您的应用程序中增加、标签和parsing的功能。 SizerOne是VS-OCX的最新版,包含两个构件,可处理简单和复杂的,一个可创建笔记本型和Outlook型的标签,以及一个用于自动对字符串进行parsie的parsing构件。 其他的功能允许您更快递设计网格和表单、在子控件中增框架、灰度图片等。 True DataControl 在您的桌面和网络应用程序的数据源中指定业务逻辑。 True DataControl 是一个ActiveX 控件,可作为OLE DB/ADO 数据源来创建应用程序。 它不仅仅是数据源,还是一个具备逻辑的数据源—可替换MS ADO 数据控件等标准数据源—允许程序员在数据源中将业务逻辑指定为一套业务规则,从而使应用程序更耐用、可扩展和可管理。 True DBGrid Pro 在您的应用程序中加入强大的数据绑定网格。 True DBGrid Pro (由ComponentOne及以前的APEX 软件公司开发)允许最终用户以列表格式浏、编辑、添加和删除数据。 True DBGrid Pro 可对数据库的界面进行全面管理,使程序员把精力集中在与应用程序有关的重要任务上。 True DBGrid Pro 还可以通过程序员自己的数据源用于非绑定或存储模式。 True DBInput Pro 收集准确、格式化的用户输入。 True DBInput Pro 集成了8个高质量、面向数据的ActiveX 输入控件和5个可为程序员提供所需工具的对象,以创建企业范围内的互联网/内部网前端数据库应用。 这些强化的控件可替换Visual Basic的文本、日历、屏蔽、编辑框和框架控件来进行数据的输入,并可为金融应用程序增加定制的对象。 True DBList Pro 在您的应用程序中加入多列列表和组合框。 True DBList Pro 是一个由两个面向数据的ActiveX构件套,可为您的应用程序提供耐用的数据访问、数据表示和用户界面功能,使其能像网格一样运行,但却对列表有轻量化的要求。 功能包括对原始OLE DB和 ADO的支持、格式化的和打印、多列排序和搜索、导出为HTML等。 ComponentOne WebChart (包括表单) 为动态服务器页(ASP)创建独立于浏器的动态表单。 True WebChart是一个企业图表工具,允许您开发图表或图形,并作为JPEG或PNG文件应用于任何浏器。 你还可以将表单用作ActiveX控件,以便让最终用户对图表样式和数据的值进行更改。 True WebChart 具有两个服务器端的图表构件- 1个用于2D图表,另一个用于3D构件。 ASP 的web服务器可进行图表的创建并将完整的图表和图形发送到服务器。 VSFlexGrid Pro 增加灵活的网格,以显示列表数据。 VSFlexGrid Pro是对随Visual Basic附带的MSFlexGrid 的升级,可向您提供全范围的功能,以便为数据库应用程序创建灵活、强大的前端。 用一系列新方法在您的Windows、互联网或内部网项目中对动态数据的显示和表示进行定制化,以进行显示、编辑、格式化、组织、汇总和列表数据的打印。 VSSPELL 为任何Visual Basic 应用程序增加拼写检查和同义词词典功能。 VSSPELL 是一个定制化的库,由vsSpell和 vsThesaurus组成。 只需将控件置于您的表单中,您的最终用户即可立即拥有收录25万多个美国英语单词的VSSPELL字典的功能。 该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,以便显示或导出。 VSVIEW 允许您在创建表格时将文本进行多列格式化,包括增加表头、页脚、文本框、边框和文本环绕等。 您可以对图片、嵌入的RTF字符串进行渲染并导出到RTF或HTML中。 您甚至还可以在您的应用程序中增加所见即所得的,提供无级略图及页面的并排。 用户可完全控制和页面的方向。 ComponentOne Query 可在您的应用程序中加入临时查询功能并可被用户直接使用。 ComponentOne的查询构件是一个基于COM,用于应用程序集成的构件,您的最终用户无需为此学习新的技能。 该构件与强大的查询生成引擎、查询引擎和schema 设计器完全兼容。 功能包括: 支持SQL数据库、 Simple DataSource 模式、 内置模块、可定制用户界面、层叠文件夹结构、价值编辑等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值