ci框架经canvas压缩图片后经base64上传
来源:互联网 发布:photoshop mac安装 编辑:程序博客网 时间:2024/06/05 06:59
前端HTML代码:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>上传图片</title><script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script></head><body><form method="post" enctype='multipart/form-data'><input type="file" id="mypic" name="mypic" accept="image/*"><input type="submit" id="tanchu"></form><script type="text/javascript">$(function(){var input = document.getElementById("mypic"); //$('#mypic').addEventListener('change',readFile,false);//此处不能用id选择器添加事件监听input.addEventListener('change',readFile,false);function readFile(){ var file = this.files[0]; //这里我们判断下类型如果不是图片就返回 去掉就可以上传任意文件 if(!/image\/\w+/.test(file.type)){ alert("请确保文件为图像类型"); return false; } var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { compressImg(reader.result, function (res) { $.post( 'base64.php',//跳转的url {'IMAGE':res}, function(data){ //进行返回数据的处理 }, 'json' ) }); }; } //压缩图片 function compressImg(soureImg, callback) { self = this; var after = getByteLen(soureImg) / 1024; console.log('压缩前==>' + getByteLen(soureImg) / 1024 + 'kb'); console.log('压缩中...'); console.time('用时'); // 参数处理 var baseImg = soureImg; // 创建img var oImg = new Image(); oImg.src = baseImg; // 处理图片大小,宽度大于 1920则压缩大小为一半 var Iwidth; var Iheight; oImg.addEventListener('load', function (ev) { Iwidth = ev.target.width; Iheight = ev.target.height; if (Number(Iwidth) > 1920) { Iwidth = Iwidth / 2; Iheight = Iheight / 2; } // 创建canvas var canvas = document.createElement('canvas'); var cxt = canvas.getContext("2d"); canvas.width = Iwidth; canvas.height = Iheight; cxt.drawImage(oImg, 0, 0, Iwidth, Iheight); var canvasBase64 = canvas.toDataURL("image/jpeg", 0.5); callback(canvasBase64); // 垃圾回收 oImg = null; canvas = null; console.timeEnd('用时'); console.log('压缩后==>' + getByteLen(canvasBase64) / 1024 + 'kb'); console.log('转换率==>' + getByteLen(canvasBase64) / 1024 / after * 100 + '%'); }); } function getByteLen(str) { var l = str.length; var n = l; for (var i = 0; i < l; i++) { if (str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255) { n++ } } return n }})</script></body></html>
后台php处理代码
<?phpheader('Content-type:text/html;charset="utf-8"');/*echo '<pre>';print_r($_POST['IMAGE']);exit;*///利用这样的方式也能达到刷选出来数据的目的/*$img = trim($_POST['IMAGE']); $jpg = explode('/', explode(';', $img)[0])[1]; $start=strpos($img,','); $img= substr($img,$start+1);*/ $base64_img = trim($_POST['IMAGE']);preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result);$type = $result[2]; if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){ $path = './images'; if(!file_exists($path)){ mkdir($path,0777,true); } $file = uniqid();//基于以微秒计的当前时间,生成一个唯一的ID $fileName = $path .'/'. $file. '.' . $type; $img = str_replace($result[1], '', $base64_img); $img = str_replace(' ', '+', $img);//这一步要注意替换,要不然会出现乱码 $data = base64_decode($img); $success = file_put_contents($fileName, $data);//至此,图片已经上传成功,后续判断根据自己需求来更改 if($success){ $s_config['image_library'] = 'gd2'; $s_config['source_image'] = $path . '/' . $file . '.' .$type; $s_config['new_image'] = $path . '/s_' . $file . '.' .$type; $fileName_s = date('Ymd') . '/s_' . $file . '.' .$type; $s_config['create_thumb'] = true; $s_config['thumb_marker'] = ''; $s_config['maintain_ratio'] = true; $s_config['quality'] = 50; $s_config['width'] = 300; $s_config['height'] = 200; $this->load->library('image_lib', $s_config); $this->image_lib->resize(); echo json_encode(['data' => ['yt' =>$this->config->config['resources_img_url'] . $fileName, 'slt' => $this->config->config['resources_img_url'] . $fileName_s]]); }else{ echo json_encode(array('code'=>101,'msg'=>'上传失败')); } }else{ echo json_encode(array('code'=>101,'msg'=>'图片类型不符合')); }
阅读全文
0 0
- ci框架经canvas压缩图片后经base64上传
- 图片压缩,Base64编码后上传服务器
- 微信手机网页上传图片高效率压缩(Canvas+Base64)
- 利用canvas前端实现图片压缩后上传
- CI框架之图片上传
- ci框架中的图片上传
- YJKJ上传图片canvas压缩
- Vue directive自定义指令+canvas实现H5图片压缩上传-Base64格式
- 图片上传:FileReader获取,Canvas压缩图片
- js图片转base64编码压缩上传
- android 图片转Base64压缩上传
- CI框架+Umeditor上传图片配置信息
- CI框架中的图片上传功能
- PHP CI框架批量上传图片
- CI框架(7)- 图片上传
- html5+canvas实现图片的压缩上传
- H5 canvas实现客户端压缩图片上传
- 使用canvas实现图片压缩上传
- 图的存储结构-邻接矩阵
- 657. Judge Route Circle
- IPMI命令常用命令设置
- Groovy Json生成器和解析器
- Lua开发中的坑(持续更新ing。。。)
- ci框架经canvas压缩图片后经base64上传
- 9块9的阿里云服务器用起来,rtmp,rtsp都可以使用了。
- Android开发阿里播放器
- js经典小代码
- 让vim不要自动添加新的注释行
- 螺旋矩阵顺时针打印
- Android开发之LogCat过滤
- CodeForces 149D Coloring Brackets(区间DP)
- idea配置 spirngmvc+maven+mybatis