There are many codes for generating thumbnails in PHP, but there are few codes that are fully compatible with gd1.6 and gd2.x and can ensure the clarity of thumbnails. The following code can achieve better compatibility.
Share it for everyone to learn and refer to.
-
- function ImageResize($srcFile,$toW,$toH,$toFile="")
- {
- if($toFile==""){ $toFile = $srcFile; }
- $info = "";
- $data = GetImageSize($srcFile,$info);
- switch ($data[2])
- {
- case 1:
- if(!function_exists("imagecreatefromgif")){
- echo "you The GD library cannot use GIF format images, please use Jpeg or PNG format! Return";
- exit();
- }
- $im = ImageCreateFromGIF($srcFile);
- break;
- case 2:
- if(!function_exists("imagecreatefromjpeg")){
- echo "Your GD library cannot use images in jpeg format, please use images in other formats!< ;a href='javascript:go(-1);'>Return";
- exit();
- }
- $im = ImageCreateFromJpeg($srcFile);
- break;
- case 3:
- $ im = ImageCreateFromPNG($srcFile);
- break;
- }
- $srcW=ImageSX($im);
- $srcH=ImageSY($im);
- $toWH=$toW/$toH;
- $srcWH=$srcW/ $srcH;
- if($toWH<=$srcWH){
- $ftoW=$toW;
- $ftoH=$ftoW*($srcH/$srcW);
- }
- else{
- $ftoH=$toH;
- $ ftoW=$ftoH*($srcW/$srcH);
- }
- if($srcW>$toW||$srcH>$toH)
- {
- if(function_exists("imagecreatetruecolor")){
- @$ni = ImageCreateTrueColor ($ftoW,$ftoH);
- if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
- else{
- $ni= ImageCreate($ftoW,$ftoH);
- ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
- }
- }else{
- $ni=ImageCreate ($ftoW,$ftoH);
- ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
- }
- if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile);
- else ImagePNG($ni,$toFile);
- ImageDestroy($ni);
- }
- ImageDestroy($im);
- }
Copy code
|