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程序设计有所帮助。