上传图片前将图片利用canvas进行压缩
来源:互联网 发布:linux系统破解wifi密码 编辑:程序博客网 时间:2024/05/01 21:14
我做的是上传食谱,上传餐品图片前需要将该图的质量进行压缩
HTML代码
<input type="file" name="headpic" id="headpicinput" style="display: none;" onchange="UpLoad(this)"/><div id="" class="cell"><a href="javascript:void(0);" onclick="choosePic();"><img src="../Images/1.jpg" style="width: 100%;" id="preViewImg"/></a></div><canvas id="canvas"></canvas><input type="hidden" id="imgUrl"/>JS代码
1.点击默认图片触发文件file(改变file的默认样式)
function choosePic() {$('#headpicinput').click(); };
2.选择文件以及获得文件url
function UpLoad(e) {var f = e.files[0];fileType = f.type;if(/image\/\w+/.test(fileType)) {var fileReader = new FileReader();fileReader.readAsDataURL(f);fileReader.onload = function(event) {var result = event.target.result; //返回的dataURL var image = new Image();image.src = result;//若图片大小大于1M,压缩后再上传,否则直接上传 if(f.size>1024*1024){ image.onload = function() { //创建一个image对象,给canvas绘制使用var canvas = document.getElementById("canvas"); canvas.width = this.width;canvas.height = this.height; //计算等比缩小后图片宽高 var ctx = canvas.getContext('2d');ctx.drawImage(this, 0, 0, canvas.width, canvas.height);var newImageData = canvas.toDataURL(fileType, 0.8); //重新生成图片 sendData = newImageData.replace("data:"+fileType+";base64,",'');dataLength=decodeBase64(sendData).length;//base64位图片长度(这里没有写这个方法)$("#imgUrl").val(sendData);$("#preViewImg").attr("src",newImageData);$("#canvas").hide();} }else{ image.onload = function() { //创建一个image对象,给canvas绘制使用sendData = result.replace("data:"+fileType+";base64,",'');dataLength=decodeBase64(sendData).length;$("#preViewImg").attr("src",result);$("#imgUrl").val(sendData);} }}} else {alert("请选择图片");}}
这样就能在不改变图片宽高的情况下将图片变小。然后就点击上传后台的按钮将压缩后的图片上传到服务器了。
如果对FileReader不了解的可以访问http://blog.csdn.net/zk437092645/article/details/8745647
/*ps:这个压缩的一般是jpg格式的,上传的png格式图片可能会越压缩越大。。。。。不知道咋解决,有办法的话顺便告诉我一下,谢谢*/
0 0
- 上传图片前将图片利用canvas进行压缩
- 利用canvas前端实现图片压缩后上传
- YJKJ上传图片canvas压缩
- HTML5利用Canvas压缩图片
- ImageCompression利用canvas压缩图片
- 将图片进行压缩
- 图片上传:FileReader获取,Canvas压缩图片
- 图片流上传前压缩
- 上传图片进行压缩保存
- 【图片压缩】使用canvas,html5进行图片压缩
- html5+canvas实现图片的压缩上传
- H5 canvas实现客户端压缩图片上传
- 使用canvas实现图片压缩上传
- 完善上传图片用canvas压缩
- 利用canvas实现前端压缩图片
- 利用Struts进行图片上传
- 利用struts进行图片上传
- 上传图片图像进行压缩后上传
- phpcms后台批量移动用户会员组积分bug修改
- Javascript作用域和变量提升
- 安装 python-virtualenv
- Centos下 Nginx安装与配置
- 从函数返回数组需要注意的细节
- 上传图片前将图片利用canvas进行压缩
- Android Priority Job Queue (Job Manager)(一)
- Redhat7-禁用firewalld&开启iptables&systemctl使用简介
- HTML5学习参考资料整理
- web前端-CSS Display(显示) -017
- iOS经常使用第三方库
- iOS开发设置App的图标、名称、启动图
- BLOCK使用方法
- Tiles:初识