热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » PHP/Perl编程 » PHP图片处理类CImage

PHP图片处理类CImage

论坛链接
  • PHP图片处理类CImage
  • 发布时间:2007-10-04 22:36:25    浏览数:6035    发布者:superadmin    设置字体【   
<?php
/*
*************************************
类名 CImage 月影PHP图片处理类
功能 根据源图片 利用GD库对图片进行处理

**************************************
此类包含以下功能
A.生成缩略图
B.给图片添加文字水印(包括中文)
C.将指定的图片旋转90度/180度/270度,并保存至文件
D.将图片水平/垂直翻转,并保存至文件
E.在线裁剪图片任意部分矩形(正在编写之中)
具体目标效果暂时可以参考 http://yananzb.com/cut/cut.htm
期待您的响应

成员函数说明
---------------------------------------------------------------------------------------------
public void CImage::__construct(string $src_image_file)
功能:类CImage的构造函数
参数 
$src_image_file 字符串,源图片文件名 注意,目前只支持gif,png,jpeg,jpg格式,这是GD库的限制,并非本程序的局限
---------------------------------------------------------------------------------------------
public bool CImage: thumb($image_dist,$x)
功能:根据源图片生成缩略图,并保存至文件
$image_dist 字符串  目标缩略图片路径及文件名 如 /images/th.jpg
$x 整型 目标缩略图片的尺寸限制 即当原始图片的宽大于高时,那么新的缩略图的宽为$x,反之高为$x
---------------------------------------------------------------------------------------------
public bool image_press($image_dist,$str,$font="simkai.ttf")

函数功能:
图片生成水印并保存新图片至目标文件
参数说明:
$image_dist 字符串 目标图片名
$str 字符串 要写入到图片水印的字符串
$font 字符串 合法的系统字体名或WEB目录中正确的字体文件名
---------------------------------------------------------------------------------------------
public bool rotate($image_dist,$angle)
函数功能:
将源图片旋转一定角度并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
$angle 整数 要旋转的角度 只能是90或180或270度
---------------------------------------------------------------------------------------------
public bool rotate_h($image_dist)
函数功能:
将源图片水平翻转,并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
---------------------------------------------------------------------------------------------
public bool rotate_v($image_dist)
函数功能:
将源图片垂直翻转,并将新图片保存至文件
参数说明:
$image_dist 字符串 目标图片文件名
---------------------------------------------------------------------------------------------
使用范例:
$p=new CImage("s.jpg"); //创建一个图片处理对象
$p->thumb("thumb.jpg",300); //生成缩略图 限制尺寸为300,保存为thumb.jpg
$p->rotate("rt.jpg",90); //旋转90度,并保存为rt.jpg,类似地,你可以将90换成180,270进行旋转
$p->rotate_h("h.jpg"); //水平翻转
$p->rotate_v("v.jpg"); //垂直翻转

说明定义完毕
此类还在进一步完善之中,欢迎朋友们一起交流,提出宝贵意见
*/
class CImage
{
private $src_image;
private $width;
private $height;
private $image_type;
private $img;
private $src_x;
private $src_y;

function __construct($image_file)
{
$info=GetImageSize($image_file);
$this->src_image=$image_file;
$this->width=$info[0];
$this->height=$info[1];

switch($info[2])
{
case 1:
$this->image_type="gif";
break;
case 2:
$this->image_type="jpeg";
break;
case 3:
$this->image_type="png";
break;
default:
return false;
//echo("Unsurport Image type.");
break;
} //swith end
//echo "ok";
$new_function='ImageCreateFrom'.ucfirst($this->image_type);
$this->img=$new_function($this->src_image);
$this->src_x=ImageSX($this->img);
$this->src_y=ImageSY($this->img);
}
function thumb($image_dist,$x) //$x为新图的限制边的尺寸
{
$src_x=ImageSX($this->img);
$src_y=ImageSY($this->img);
$scale=min($x/$src_x,$x/$src_y);

if($scale<1)
{
$new_x=floor($scale*$src_x);
$new_y=floor($scale*$src_y);
$img_tmp=ImageCreateTrueColor($new_x,$new_y); //set the size of Canvas for the new Image
ImageCopyResampled($img_tmp,$this->img,0,0,0,0,$new_x,$new_y,$src_x,$src_y); //Resampled
ImageDestroy($this->img);
$new_function="Image".ucfirst($this->image_type);

return $new_function($img_tmp,$image_dist);
}
} // thumb end

public function image_press($image_dist,$str,$font="simkai.ttf") //给图片生成文字水印
{
$str=iconv("GB2312","utf-8",$str);
$blue=ImageColorAllocate($this->img,90,255,255);
$white=ImageColorAllocate($this->img,255,0,0);
ImageTTFText($this->img,20,0,$this->src_x/2/2,$this->src_y-80,$white,$font,$str);
$new_function="Image".ucfirst($this->image_type);
return $new_function($this->img,$image_dist);
}

public function rotate($image_dist,$angle)
{
$img_tmp=null;
$new_function="Image".ucfirst($this->image_type);
if(($angle!=90)&&($angle!=180)&&($angle!=270))
{
echo("Un-valid angle on calling CImage::rotate(\$image_dist,\$angle) .The valid angle must be 90 or 180 or 270.");
return false;
}

if(($angle==90)||($angle==270))
{
$img_tmp=ImageCreateTrueColor($this->src_y,$this->src_x);
}
else
{
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
}

switch($angle)
{
case 90:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$this->src_y-$j-1,$i,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;

case 180:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$this->src_x-$i-1,$this->src_y-$j-1,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;

case 270:
for($i=0;$i<$this->src_x;$i++)
{
for($j=0;$j<$this->src_y;$j++)
{
ImageSetPixel($img_tmp,$j,$this->src_x-$i-1,ImageColorAt($this->img,$i,$j));
}
}
return $new_function($img_tmp,$image_dist);
break;
} //end switch

} //end rotate

public function rotate_h($image_dist)
{
$new_function="Image".ucfirst($this->image_type);
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
ImageCopyResampled($img_tmp,$this->img,0,0,$this->src_x-1,0,$this->src_x,$this->src_y,-$this->src_x,$this->src_y); //水平翻转
return $new_function($img_tmp,$image_dist);
}

function rotate_v($image_dist)
{
$new_function="Image".ucfirst($this->image_type);
$img_tmp=ImageCreateTrueColor($this->src_x,$this->src_y);
ImageCopyResampled($img_tmp,$this->img,0,0,0,$this->src_y-1,$this->src_x,$this->src_y,$this->src_x,-$this->src_y);
return $new_function($img_tmp,$image_dist);
}
} //end CImage



?>下载地址:http://www.phpchina.com/bbs/attachment.php?aid=7341
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理