CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2018-09-07 22:16
本文实例讲述了CI框架封装的常用图像处理方法。分享给大家供大家参考,具体如下:
其实微信手机端上图时,列表图最好是缩略图,节省流量,这不,又被移动坑了一把,话费签一分就停机,流量欠到90块才停机,我也是醉了。。。
不说废话了,下面是用CI 的内置处理图像的库写的,小弟不才,遗漏之处敬请指出,谢谢。
/** * 生成缩略图 * @param $path 原图的本地路径 * @return null 创建一个 原图_thumb.扩展名 的文件 * */ public function dealthumb($path){ $config[image_library] = gd2; $config[source_image] = $path; $config[create_thumb] = TRUE; //生成的缩略图将在保持纵横比例 在宽度和高度上接近所设定的width和height $config[maintain_ratio] = TRUE; $config[width] = 80; $config[height] = 80; $this->load->library(image_lib, $config); $this->image_lib->resize(); $this->image_lib->clear(); } /* * 处理图像旋转 */ public function transroate($path,$imgpath){ $this->load->library(image_lib); //(必须)设置图像库 $config[image_library] = gd2; $newname = time()._rote.jpg; //设置图像的目标名/路径 $config[new_image] =$imgpath.$newname; //(必须)设置原始图像的名字/路径 $config[source_image] = $path; //决定新图像的生成是要写入硬盘还是动态的存在 $config[dynamic_output] = FALSE; //设置图像的品质。品质越高,图像文件越大 $config[quality] = 90%; //有5个旋转选项 逆时针90 180 270 度 vrt 竖向翻转 hor 横向翻转 $config[rotation_angle] = vrt; $this->image_lib->initialize($config); if(@$this->image_lib->rotate()){ $this->image_lib->clear(); return $config[new_image]; }else{ $this->image_lib->clear(); return ; } } /** * 处理图像水印 */ public function overlay($path,$imgpath){ $this->load->library(image_lib); $newname = time()._over.jpg; //设置新图像名称 $config[new_image] =$imgpath.$newname; //调用php gd库 绘图 $config[image_library] = gd2; //源图像 本地地址 $config[source_image] = $path; //覆盖文字 $config[wm_text] = Copyright 2015 - Friker; //覆盖类型 文字/图像 $config[wm_type] = text; //文字字体类型 //$config[wm_font_path] = C:\Windows\Fonts\vrinda.ttf; //字体大小 $config[wm_font_size] = 16; //字体颜色 $config[wm_font_color] = ff0000; //垂直方向距离顶端距离 $config[wm_vrt_alignment] = 20; //水平方向距离左端距离 $config[wm_hor_alignment] = center; //padding $config[wm_padding] = 20; $this->image_lib->initialize($config); if($this->image_lib->watermark()){ $this->image_lib->clear(); return $config[new_image]; }else{ $this->image_lib->clear(); return ; } } /** * 处理图片上传 * 文件上传类 通过前台 上传文件 */ public function uploadfile(){ //文件上传部分 // 处理文件 // $data = ; $this->load->helper(url); $formpic = key($_FILES); //文件处理部分 if(false === empty($_FILES[$formpic][tmp_name])){ //设置文件上传的路径 $upload[upload_path] = ./public/img/; //限制文件上传的类型 $upload[allowed_types] = jpegjpggifpng; //限制文件上传的大小 $upload[max_size] = 2048; //设置文件上传的路径 $upload[file_name] = date(YmdHis, time()).rand(10000, 99999); //加载文件上传配置信息 $this->load->library(upload, $upload); //处理文件上传 $this->upload->do_upload($formpic); //返回文件上传信息 $image = $this->upload->data(); /* file_name => string 2015071702051718388.jpg (length=23) file_type => string image/jpeg (length=10) file_path => string E:/wamp/返回文件上传名字 $data = $image[file_name]; $this->dealthumb($image[full_path]); $this->overlay($image[full_path],$image[file_path]); $this->transroate($image[full_path],$image[file_path]);// $thumbdata = ; //生成缩略图名称 $pos = strripos($image[file_name], .); $newname = substr($image[file_name], 0,$pos)._thumb.substr($image[file_name], $pos); if(file_exists($image[file_path].$newname)){ $thumbdata = $newname; } } //$dirroot = $_SERVER[DOCUMENT_ROOT]; //$this->dealthumb($dirroot./public/img/.$data); //上传失败 if(!$data){ echo json_encode(array(status=>0,msg=>上传失败!)); }else{ //上传成功 echo json_encode(array( name=>$data, pic=>base_url().public/img/.$data, picthumb=>$thumbdata == ?$data:$thumbdata )); } }
下面是前端的基本html代码:
<!doctype html> <html> <head> <meta charset=utf-8> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <link rel=stylesheet href=/public/stylesheets/bootstrap.min.css /> <link rel=stylesheet href=/public/stylesheets/bootstrap-responsive.min.css /> <link rel=stylesheet href=/public/stylesheets/matrix-style.css /> <link rel=stylesheet href=/public/stylesheets/matrix-media.css /> <script type=text/javascript src=/public/javascripts/jquery.min.js></script> <script type=text/javascript src=/public/javascripts/jquery.form.js></script> <script type=text/javascript src=/public/javascripts/jquery.validate.js></script> <style type=text/css> body{background:#eeeeee; margin:0px;} </style> </head> <body> <div class=control-group> <label class=control-label> 分享logo: </label> <div class=controls> <input type=file name=sharepic id=sharepic/> <input type=hidden name=act_sharepic value= id=act_sharepic/>(<sapn class=fred>最佳大小为 80 X 80 像素</sapn>) <p style=margin:20px 0;><img src=/public/img/default.png alt= id=sharepic_img></p> </div> </div> <script type=text/javascript> $(function () { /*****************图片上传部分开始 *******************/ var act = <form class=myupload action=+<?php echo site_url(mytest/uploadfile);?>+ method=post enctype=multipart/form-data></form>; $(#sharepic).change(function(){ $(this).wrap(act); $(this).parent(.myupload).ajaxSubmit({ dataType: json, success: function(data) { var src= data.pic; //更改预览图像地址; $(#sharepic).unwrap(); }, error:function(xhr){ alert(JSON.parse(xhr)); } }); }); }) </script> </body> </html>
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
上一篇:一些使用频率比较高的php函数
文章标题:CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
文章链接:http://soscw.com/essay/15899.html