程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP 對png 圖像進行縮放,支持透明背景

PHP 對png 圖像進行縮放,支持透明背景

編輯:關於PHP編程

       PHP 對 png 圖像進行縮放,支持透明背景

      function smart_resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false )

      {

      if ( $height <= 0 && $width <= 0 ) {

      return false;

      }

      $info = getimagesize($file);

      $image = '';

      $final_width = 0;

      $final_height = 0;

      list($width_old, $height_old) = $info;

      if ($proportional) {

      if ($width == 0) $factor = $height/$height_old;

      elseif ($height == 0) $factor = $width/$width_old;

      else $factor = min ( $width / $width_old, $height / $height_old);

      $final_width = round ($width_old * $factor);

      $final_height = round ($height_old * $factor);

      }

      else {

      $final_width = ( $width <= 0 ) ? $width_old : $width;

      $final_height = ( $height <= 0 ) ? $height_old : $height;

      }

      switch ($info[2] ) {

      case IMAGETYPE_GIF:

      $image = imagecreatefromgif($file);

      break;

      case IMAGETYPE_JPEG:

      $image = imagecreatefromjpeg($file);

      break;

      case IMAGETYPE_PNG:

      $image = imagecreatefrompng($file);

      break;

      default:

      return false;

      }

      $image_resized = imagecreatetruecolor( $final_width, $final_height );

      if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {

      $trnprt_indx = imagecolortransparent($image);

      // If we have a specific transparent color

      if ($trnprt_indx >= 0) {

      // Get the original image's transparent color's RGB values

      $trnprt_color = imagecolorsforindex($image, $trnprt_indx);

      // Allocate the same color in the new image resource

      $trnprt_indx = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

      // Completely fill the background of the new image with allocated color.

      imagefill($image_resized, 0, 0, $trnprt_indx);

      // Set the background color for new image to transparent

      imagecolortransparent($image_resized, $trnprt_indx);

      }

      // Always make a transparent background color for PNGs that don't have one allocated already

      elseif ($info[2] == IMAGETYPE_PNG) {

      // Turn off transparency blending (temporarily)

      imagealphablending($image_resized, false);

      // Create a new transparent color for image

      $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);

      // Completely fill the background of the new image with allocated color.

      imagefill($image_resized, 0, 0, $color);

      // Restore transparency blending

      imagesavealpha($image_resized, true);

      }

      }

      imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);

      if ( $delete_original ) {

      if ( $use_linux_commands )

      exec('rm '.$file);

      else

      @unlink($file);

      }

      switch ( strtolower($output) ) {

      case 'browser':

      $mime = image_type_to_mime_type($info[2]);

      header("Content-type: $mime");

      $output = NULL;

      break;

      case 'file':

      $output = $file;

      break;

      case 'return':

      return $image_resized;

      break;

      default:

      break;

      }

      switch ($info[2] ) {

      case IMAGETYPE_GIF:

      imagegif($image_resized, $output);

      break;

      case IMAGETYPE_JPEG:

      imagejpeg($image_resized, $output);

      break;

      case IMAGETYPE_PNG:

      imagepng($image_resized, $output);

      break;

      default:

      return false;

      }

      return true;

      }

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved