欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實現(xiàn)對png圖像進行縮放的方法(支持透明背景)

 更新時間:2015年07月15日 11:07:44   作者:鑒客  
這篇文章主要介紹了PHP實現(xiàn)對png圖像進行縮放的方法(支持透明背景),可實現(xiàn)php針對png圖像的縮放功能,且支持透明背景,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)對png圖像進行縮放的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

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;
}

希望本文所述對大家的php程序設(shè)計有所幫助。

相關(guān)文章

  • php獲取url參數(shù)方法總結(jié)

    php獲取url參數(shù)方法總結(jié)

    這篇文章主要介紹了php獲取url參數(shù)方法,實例總結(jié)了利用parse_url()函數(shù)解析URL的方法,需要的朋友可以參考下
    2014-11-11
  • 如何用C語言編寫PHP擴展的詳解

    如何用C語言編寫PHP擴展的詳解

    本篇文章是對用C語言編寫PHP擴展進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • php數(shù)組函數(shù)序列之a(chǎn)rray_sum() - 計算數(shù)組元素值之和

    php數(shù)組函數(shù)序列之a(chǎn)rray_sum() - 計算數(shù)組元素值之和

    array_sum() 函數(shù)返回數(shù)組中所有值的總和。如果所有值都是整數(shù),則返回一個整數(shù)值。如果其中有一個或多個值是浮點數(shù),則返回浮點數(shù)
    2011-10-10
  • PHPstorm快捷鍵(分享)

    PHPstorm快捷鍵(分享)

    下面小編就為大家?guī)硪黄狿HPstorm快捷鍵(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • php設(shè)計模式 Builder(建造者模式)

    php設(shè)計模式 Builder(建造者模式)

    將一個復(fù)雜對象的構(gòu)建與它的表示分離,使用同樣的構(gòu)建過程可以創(chuàng)建不同的表示
    2011-06-06
  • thinkphp框架下實現(xiàn)登錄、注冊、找回密碼功能

    thinkphp框架下實現(xiàn)登錄、注冊、找回密碼功能

    這篇文章主要介紹了thinkphp框架下實現(xiàn)登錄、注冊、找回密碼功能的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-04-04
  • php中fsockopen用法實例

    php中fsockopen用法實例

    這篇文章主要介紹了php中fsockopen用法,實例分析了fsockopen的創(chuàng)建、寫入及關(guān)閉等具體流程,需要的朋友可以參考下
    2015-01-01
  • mysql建立外鍵

    mysql建立外鍵

    mysql建立外鍵...
    2006-11-11
  • php使用socket簡單實現(xiàn)通信功能

    php使用socket簡單實現(xiàn)通信功能

    socket只不過是一個數(shù)據(jù)結(jié)構(gòu)。使用這個socket數(shù)據(jù)結(jié)構(gòu)去開始一個客戶端和服務(wù)器之間的會話。服務(wù)器是一直在監(jiān)聽準(zhǔn)備產(chǎn)生一個新的會話。當(dāng)一個客戶端連接服務(wù)器,它就打開服務(wù)器正在進行監(jiān)聽的一個端口進行會話
    2023-03-03
  • php實現(xiàn)對文件壓縮簡單的方法

    php實現(xiàn)對文件壓縮簡單的方法

    在本篇文章里我們給大家整理的是關(guān)于php如何實現(xiàn)對文件壓縮的實例內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2019-09-09

最新評論