当前位置:  -> 首页 -> PHP中修改图像大小

上一篇 | 下一篇
PHP中修改图像大小
作者:洛羽叶  点击率:1604  发布时间:2012-05-09

PHP中生成图片文件的缩略图,主要利用Imagecopyresampled、imagecopyresized函数分别处理GIF图片和其它类型图片。

生成缩略图的关键是按照比例计算好新图片的宽度和高度。

//根据制定宽度、高度生成图片缩略图

function resizeimage($filename,$width=500,$height=500)

{

         //define variable

         $oldwidth;

         $oldheight;

         $oldsize;

         $newwidth;

         $newheight;   

         $newsize;

         $newfilename;

         $imagetype;

         $oldimage;

         $newimage;

        

         //init variable

         $newfilename='';

         //create new image

         if(file_exists($filename) && preg_match("/s*\.[jpg|gif|jpeg|png]/i",$filename))

         {

                   //根据原始图片大小比例和新的图片宽度高度,计算获取新的实际宽度、高度,主要是为了保持比例

                   $newsize=makeimagesize($filename,$width,$height);

                   $newwidth=$newsize['width'];

                   $newheight=$newsize['height'];

                  

                   //get new image file name

                   $newfilename=getpath($filename).getfilename($filename).'resize.'.getextendname($filename);

                  

                   //get image type 获取文件类型

                   $imagetype=getimagetype($filename);

                  

                   //get old image size 获取原始图片大小

                   $oldsize=getimagesize($filename);

                   $oldwidth=$oldsize[0];

                   $oldheight=$oldsize[1];

                  

                   //get old image content 读取原始图片内容

                   if($imagetype==IMAGETYPE_GIF)

                            $oldimage=imagecreatefromgif($filename);

                   elseif($imagetype==IMAGETYPE_JPEG)

                            $oldimage=imagecreatefromjpeg($filename);

                   elseif($imagetype==IMAGETYPE_PNG)

                            $oldimage=imagecreatefrompng($filename);                 

                   else                   

                            $oldimage='';

                           

                   //生成新的图片

                   if(!empty($oldimage))

                   {

                            //create new image

                            if(function_exists('imagecreatetruecolor') && ($imagetype!=IMAGETYPE_GIF))

                            {

                                    

                                     $newimage=imagecreatetruecolor($newwidth,$newheight);

                                     imagecopyresampled($newimage,$oldimage,0,0,0,0,$newwidth,$newheight,$oldwidth,$oldheight);

                            }

                            else

                            {

                                     $newimage=imagecreate($newwidth,$newheight);

                                     imagecopyresized($newimage,$oldimage,0,0,0,0,$newwidth,$newheight,$oldwidth,$oldheight);

                            }

                            //delete old reisize file

                            if(file_exists($newfilename))

                                     unlink($newfilename);

 

                            //save to file 写入磁盘文件

                            if($imagetype==IMAGETYPE_GIF)

                                     imagepng($newimage,$newfilename);

                            elseif($imagetype==IMAGETYPE_JPEG)

                                     imagejpeg($newimage,$newfilename);

                            elseif($imagetype==IMAGETYPE_PNG)

                                     imagepng($newimage,$newfilename);

                            else                             

                                     $newfilename='';

 

                            //释放资源

                            //destroy image resource

                            imagedestroy($oldimage);

                            imagedestroy($newimage);

                   }

                   else

                            $newfilename='';             

         }

        

         //return new filename

         return $newfilename;

}

 

 

//按照比例计算新的图片大小

function makeimagesize($filename,$width,$height)

{

         //define variable

         $size;

         $oldsize;

         $oldwidth;

         $oldheight;

         $newwidth;

         $newheight;

 

         //init variable

         $size['width']=0;

         $size['height']=0;

 

         //get current image size

         $oldsize=getimagesize($filename);

         $oldwidth=$oldsize[0];

         $oldheight=$oldsize[1];

 

         if($oldwidth>0 && $oldheight>0)

         {

                   $newwidth=$width;

                   $newheight=round($newwidth*($oldheight/$oldwidth));

                   if($newheight>$height)

                   {

                            $newheight=$height;

                            $newwidth=round($newheight*($oldwidth/$oldheight));

                   }

                   if($newwidth<$oldwidth && $newheight<$oldheight)

                   {

                            $size['width']=$newwidth;

                            $size['height']=$newheight;

                   }

                   else

                   {

                            $size['width']=$oldwidth;

                            $size['height']=$oldheight;

                   }

                  

         }       

         return $size;

}

标签: PHP
引用地址:本站原创
   站点首页      技术人生      旅途足迹      我要留言      友情链接      关于站长   
[本站统计]
在线人数:0
今日访问:111
总访问量:1468695
Copyright 2006-2022 EasyWeb 1.6 订阅 All Rights Reserved
粤ICP备08028977号-1
www.luoriver.com
Created by WWH in 2006