CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
本文实例讲述了CI框架封装的常用图像处理方法。分享给大家供大家参考,具体如下:
其实微信手机端上图时,列表图最好是缩略图,节省流量,这不,又被移动坑了一把,话费签一分就停机,流量欠到90块才停机,我也是醉了。。。
不说废话了,下面是用CI的内置处理图像的库写的,小弟不才,遗漏之处敬请指出,谢谢。
/** *生成缩略图 *@param$path原图的本地路径 *@returnnull创建一个原图_thumb.扩展名的文件 * */ publicfunctiondealthumb($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(); } /* *处理图像旋转 */ publicfunctiontransroate($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个旋转选项逆时针90180270度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''; } } /** *处理图像水印 */ publicfunctionoverlay($path,$imgpath){ $this->load->library('image_lib'); $newname=time().'_over.jpg'; //设置新图像名称 $config['new_image']=$imgpath.$newname; //调用phpgd库绘图 $config['image_library']='gd2'; //源图像本地地址 $config['source_image']=$path; //覆盖文字 $config['wm_text']='Copyright2015-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''; } } /** *处理图片上传 *文件上传类通过前台上传文件 */ publicfunctionuploadfile(){ //文件上传部分 //处理文件 //$data=''; $this->load->helper('url'); $formpic=key($_FILES); //文件处理部分 if(false===empty($_FILES[$formpic]['tmp_name'])){ //设置文件上传的路径 $upload['upload_path']="./public/img/"; //限制文件上传的类型 $upload['allowed_types']='jpeg|jpg|gif|png'; //限制文件上传的大小 $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/www/testci/public/img/'(length=30) 'full_path'=>string'E:/wamp/www/testci/public/img/2015071702051718388.jpg'(length=53) 'raw_name'=>string'2015071702051718388'(length=19) 'orig_name'=>string'2015071702051718388.jpg'(length=23) 'client_name'=>string'u=415761610,1548338330&fm=116&gp=0.jpg'(length=38) 'file_ext'=>string'.jpg'(length=4) 'file_size'=>float3.74 'is_image'=>booleantrue 'image_width'=>int146 'image_height'=>int220 'image_type'=>string'jpeg'(length=4) 'image_size_str'=>string'width="146"height="220"'(length=24) */ //var_dump($image); //返回文件上传名字 $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){ echojson_encode(array('status'=>0,'msg'=>"上传失败!")); }else{ //上传成功 echojson_encode(array( 'name'=>$data, 'pic'=>base_url()."public/img/".$data, 'picthumb'=>$thumbdata==''?$data:$thumbdata )); } }
下面是前端的基本html代码:
<!doctypehtml> <html> <head> <metacharset="utf-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"/> <linkrel="stylesheet"href="/public/stylesheets/bootstrap.min.css"/> <linkrel="stylesheet"href="/public/stylesheets/bootstrap-responsive.min.css"/> <linkrel="stylesheet"href="/public/stylesheets/matrix-style.css"/> <linkrel="stylesheet"href="/public/stylesheets/matrix-media.css"/> <scripttype="text/javascript"src="/public/javascripts/jquery.min.js"></script> <scripttype="text/javascript"src="/public/javascripts/jquery.form.js"></script> <scripttype="text/javascript"src="/public/javascripts/jquery.validate.js"></script> <styletype="text/css"> body{background:#eeeeee;margin:0px;} </style> </head> <body> <divclass="control-group"> <labelclass="control-label">分享logo:</label> <divclass="controls"> <inputtype="file"name="sharepic"id="sharepic"/> <inputtype="hidden"name="act_sharepic"value=""id="act_sharepic"/>(<sapnclass="fred">最佳大小为80X80像素</sapn>) <pstyle="margin:20px0;"><imgsrc="/public/img/default.png"alt=""id="sharepic_img"></p> </div> </div> <scripttype="text/javascript"> $(function(){ /*****************图片上传部分开始*******************/ varact="<formclass='myupload'action='"+"<?phpechosite_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){ varsrc=data.pic; //更改预览图像地址 $('#sharepic_img').attr("src",src); $('#act_sharepic').val(data.name); $('#sharepic').unwrap(); }, error:function(xhr){ alert(JSON.parse(xhr)); } }); }); }) </script> </body> </html>
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《ZendFrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。