php图像处理---生成缩略图
在php站点开发过程中经常要用到图片显示部分,而合理用缩略图会大幅提高站点的浏览速度,以下是本人在闲时编写的两个生成缩略图的函数
第一个是无损生成缩略图,只是把原图按比例缩小了
第二个是截取生成缩略图,这样也有一个好处就是界面的图片大小会完全一致,不用考虑图片会被拉伸的问题了。
由于本人技术有限,此些函数只能作为一个Demo吧,欢迎大家多提宝贵意见!!
函数仍在改进中。。。。。。
<?php
function miniature($im_url,$nim_xory,$fix,$newname,$path)
{
/*
生成缩略图
$im_url:原始图像路经
$fix:为0固定宽$nim_xory取宽值,为1固定高$nim_xory取高值
$path:为图片存放路经,如在该目录下的smallpic文件夹中,则填smallpic,最后无须加"/"
$newname:生成缩略图的新名称
本函数现支持gif及jpg两种格式,若要支持其它格式可自行增加,方法不变
*/
$arr=getimagesize($im_url);
$oim_x=$arr[0];
$oim_y=$arr[1];
$im_type=end(explode(".",$im_url));
if($path=="")
{
}
else
{
$path=$path."/";
}
if($fix==0)//横向固定图片大小
{
$gl=$nim_xory/$oim_x;
$nim_y=$oim_y*$gl;
if($im_type=="gif")
{
$im = imagecreatefromgif($im_url);
$nim=createimagecolor($nim_xory,$nim_y,$im,$oim_x,$oim_y);
imagegif($nim,$path.$newname);
}elseif($im_type=="jpg")
{
$im = imagecreatefromjpeg($im_url);
$nim=createimagecolor($nim_xory,$nim_y,$im,$oim_x,$oim_y);
imagejpeg($nim,$path.$newname);
}
else
{
//此处可增加新的图片格式支持,方法参照以上内容
}
}
else if($fix==1)//纵向固定图片大小
{
$gl=$nim_xory/$oim_y;
$nim_x=$oim_x*$gl;
if($im_type=="gif")
{
$im = imagecreatefromgif($im_url);
$nim=createimagecolor($nim_x,$nim_xory,$im,$oim_x,$oim_y);
imagegif($nim,$path.$newname);
}
elseif($im_type=="jpg")
{
$im = imagecreatefromjpeg($im_url);
$nim=createimagecolor($nim_x,$nim_xory,$im,$oim_x,$oim_y);
imagejpeg($nim,$path.$newname);
}
else
{
//此处可增加新的图片格式支持,方法参照以上内容
}
}
else
{
echo "警告:遇到函数不支持的图片类型!函数支持有0:gif,1:jpg";
}
imagedestroy($nim);
}
function fix_picture($im_url,$nim_x,$nim_y,$newname,$path)//固定图片按比例切取
{
$arr=getimagesize($im_url);
$oim_x=$arr[0];
$oim_y=$arr[1];
$pi=$nim_x/$nim_y;
$im_type=end(explode(".",$im_url));
if(($oim_x/$oim_y)>($nim_x/$nim_y)){
if($im_type=="gif"){
$im = imagecreatefromgif($im_url);
$nim=createimagecolor($nim_x,$nim_y,$im,$pi*$oim_y,$oim_y);
imagegif($nim,$path.$newname);
}elseif($im_type=="jpg")
{
$im = imagecreatefromjpeg($im_url);
$nim=createimagecolor($nim_x,$nim_y,$im,$pi*$oim_y,$oim_y);
imagejpeg($nim,$path.$newname);
}
else
{
//此处可增加新的图片格式支持,方法参照以上内容
}
}else{
if($im_type=="gif"){
$im = imagecreatefromgif($im_url);
$nim=createimagecolor($nim_x,$nim_y,$im,$oim_x,$oim_x/$pi);
imagegif($nim,$path.$newname);
}elseif($im_type=="jpg")
{echo $path.$newname;
$im = imagecreatefromjpeg($im_url);
$nim=createimagecolor($nim_x,$nim_y,$im,$oim_x,$oim_x/$pi);
imagejpeg($nim,$path.$newname);
}
else
{
//此处可增加新的图片格式支持,方法参照以上内容
}
}
imagedestroy($nim);
}
function createimagecolor($pic_x,$pic_y,$pic_handle,$old_pic_x,$old_pic_y)//创建图型
{
$nim= imagecreatetruecolor($pic_x,$pic_y);
imagecopyresized($nim,$pic_handle,0,0,0,0,$pic_x,$pic_y,$old_pic_x,$old_pic_y);
return $nim;
}
//$im_url="666.jpg";
//miniature($im_url,200,0,"888.jpg","newpic");
//imagedestroy($nim);
?>
搜索更多相关主题的帖子:
PHP