html5的canvas十分之强大,可以做到快速的截取压缩出新的图片! 不过最近开发过程中遇到一个问题,图片压缩后使用toDataURL取得图片显示为一片漆黑,什么都没有! 折腾了很久,起初以为是上传问题,base64可能太长被截断了,后来有考虑是不是手机webview不支持canvas,总之最后百度了,发现webkit加载图片是异步的...终于恍然大悟,上js回调大法 //图片压缩函数,i为图片(base64格式或图片路径均可),w为压缩宽度,h为压缩高,img读取时异步的,返回处理base6…
在书上看到用<canvas>绘制图像就动手试试,刚开始,我的代码是这样的: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>canvas绘图</title> </head> <body> <canvas id="drawimg" width="500" hei…
先复习一下用法: context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height); 各个参数说明: 参数 描述 img 规定要使用的图像.画布或视频. sx 可选.开始剪切的 x 坐标位置. sy 可选.开始剪切的 y 坐标位置. swidth 可选.被剪切图像的宽度. sheight 可选.被剪切图像的高度. x 在画布上放置图像的 x 坐标位置. y 在画布上放置图像的 y 坐标位置. width 可选.要使用的图像的宽度.(伸展或缩…
现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片: 想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定. 代码 : html: <input type="file" id="upload" /> <p>压缩前:</p> <img id="oldImg" src=""/> <p>…
/** * Created by xx on 15-05-28. * 基于html5 canvas 的客户端异步上传画片的插件 * 在实际应用中,常常要用于上传图片的功能.在现在越来越多的手机webapp应用中,上传图片功能的问题尤为实出, * 主要表显为:1 手机摄象头太牛B,随便拍拍,照片都有几M * 2 在没有wifi的情况下,移动网络上线照片还是有点慢的 * 解决以上问题,主要的思路还是在客户端压缩图片尺寸,这就用到这个插件了 * * 插件中的核心代码参照网络,自己整理了一下 * * 使…
1.canvas.toDataUrl压缩图片 canvas的toDataUrl方法可以将内容导出为base64编码格式的图片,采用base64编码将比源文件大1/3,但是该方法可以指定导出图片质量,所以前端可实现上传图片的压缩.先通过fileApi拿到本地图片地址,然后新建一个Img元素,图片绘制到canvas中后再将其导出(压缩).例如: $(':file').on('change',function(){         var file = this.files[0];         v…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>上传文件</title> <script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript&quo…
HTML前端代码: <?php $this->layout('head'); ?> <?php $this->layout('sidebar'); ?> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <style type=…
HTML代码: <input id="file" type="file"> JS代码: var eleFile = document.querySelector('#file'); // 压缩图片需要的一些元素和对象 var reader = new FileReader(), img = new Image(); // 选择的文件对象 var file = null; // 缩放图片需要的canvas var canvas = document.cre…
上传图片时总会遇到图片过大上传不上去的问题,本方法是在网上搜的压缩图片的例子,我测试过了,确实能用,但是照搬别人的代码,发现压缩后图片会失真,不清晰,现经修改图片清晰度还可以,不仔细看差别不大,so,改了改 JS   返回的是一个base64字符串 /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径 * @param {Object} obj * obj 对象 有 width…