翰林文学,为您提供优质实用美文!

PHP用GD库生成高质量的缩略图片

作者:admin | 日期:2025-08-28
复制成功!

PHP用GD库生成高质量的缩略图片

  PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。

  以下是PHP源代码(ResizeImage.php)。

  复制代码 代码如下:

  

  $FILENAME="image.thumb";

  // 生成图片的宽度

  $RESIZEWIDTH=400;

  // 生成图片的高度

  $RESIZEHEIGHT=400;

  function ResizeImage($im,$maxwidth,$maxheight,$name){

  $width = imagesx($im);

  $height = imagesy($im);

  if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){

  if($maxwidth && $width > $maxwidth){

  $widthratio = $maxwidth/$width;

  $RESIZEWIDTH=true;

  }

  if($maxheight && $height > $maxheight){

  $heightratio = $maxheight/$height;

  $RESIZEHEIGHT=true;

  }

  if($RESIZEWIDTH && $RESIZEHEIGHT){

  if($widthratio < $heightratio){

  $ratio = $widthratio;

  }else{

  $ratio = $heightratio;

  }

  }elseif($RESIZEWIDTH){

  $ratio = $widthratio;

  }elseif($RESIZEHEIGHT){

  $ratio = $heightratio;

  }

  $newwidth = $width * $ratio;

  $newheight = $height * $ratio;

  if(function_exists("imagecopyresampled")){

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

  imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

  }else{

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

  imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

  }

  ImageJpeg ($newim,$name . ".jpg");

  ImageDestroy ($newim);

  }else{

  ImageJpeg ($im,$name . ".jpg");

  }

  }

  if($_FILES['image']['size']){

  if($_FILES['image']['type'] == "image/pjpeg"){

  $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);

  }elseif($_FILES['image']['type'] == "image/x-png"){

  $im = imagecreatefrompng($_FILES['image']['tmp_name']);

  }elseif($_FILES['image']['type'] == "image/gif"){

  $im = imagecreatefromgif($_FILES['image']['tmp_name']);

  }

  if($im){

  if(file_exists("$FILENAME.jpg")){

  unlink("$FILENAME.jpg");

  }

  ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);

  ImageDestroy ($im);

  }

  }

  ?>

  以下是测试代码(demo.php)

  复制代码 代码如下:

  

  include('ResizeImage.php');

  if(!empty($_POST)){

  echo($FILENAME.".jpg?cache=".rand(0,999999));

  }

  ?>

  

  

  

  

热搜文章