本文實例講述了PHP實現圖片的等比縮放和Logo水印功能。分享給大家供大家參考,具體如下:
/** * 等比縮放函數(以保存的方式實現) * @param string $picname 被縮放的處理圖片源 * @param int $maxx 縮放后圖片的最大寬度 * @param int $maxy 縮放后圖片的最大高度 * @param string $pre 縮放后圖片名的前綴名 * @return String 返回后的圖片名稱(帶路徑),如a.jpg=>s_a.jpg */function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){  $info = getimageSize($picname); //獲取圖片的基本信息  $w = $info[0];//獲取寬度  $h = $info[1];//獲取高度  //獲取圖片的類型并為此創建對應圖片資源  switch($info[2]){    case 1: //gif      $im = imagecreatefromgif($picname);      break;    case 2: //jpg      $im = imagecreatefromjpeg($picname);      break;    case 3: //png      $im = imagecreatefrompng($picname);      break;    default:      die("圖片類型錯誤!");  }  //計算縮放比例  if(($maxx/$w)>($maxy/$h)){    $b = $maxy/$h;  }else{    $b = $maxx/$w;  }  //計算出縮放后的尺寸  $nw = floor($w*$b);  $nh = floor($h*$b);  //創建一個新的圖像源(目標圖像)  $nim = imagecreatetruecolor($nw,$nh);  //執行等比縮放  imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);  //輸出圖像(根據源圖像的類型,輸出為對應的類型)  $picinfo = pathinfo($picname);//解析源圖像的名字和路徑信息  $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];  switch($info[2]){    case 1:      imagegif($nim,$newpicname);      break;    case 2:      imagejpeg($nim,$newpicname);      break;    case 3:      imagepng($nim,$newpicname);      break;  }  //釋放圖片資源  imagedestroy($im);  imagedestroy($nim);  //返回結果  return $newpicname;}//測試://echo imageUpdateSize("./images/bg.jpg",200,200,"ss_"); // ./images/s_bg.jpg/** * 為一張圖片添加上一個logo圖片水?。ㄒ员4娴姆绞綄崿F) * @param string $picname 被處理圖片源 * @param string $logo 水印圖片 * @param string $pre 處理后圖片名的前綴名 * @return String 返回后的圖片名稱(帶路徑),如a.jpg=>n_a.jpg */function imageUpdateLogo($picname,$logo,$pre="n_"){  $picnameinfo = getimageSize($picname); //獲取圖片源的基本信息  $logoinfo = getimageSize($logo); //獲取logo圖片的基本信息  //var_dump($logoinfo);  //根據圖片類型創建出對應的圖片源  switch($picnameinfo[2]){    case 1: //gif      $im = imagecreatefromgif($picname);      break;    case 2: //jpg      $im = imagecreatefromjpeg($picname);      break;    case 3: //png      $im = imagecreatefrompng($picname);      break;    default:      die("圖片類型錯誤!");  }  //根據logo圖片類型創建出對應的圖片源  switch($logoinfo[2]){    case 1: //gif      $logoim = imagecreatefromgif($logo);      break;    case 2: //jpg      $logoim = imagecreatefromjpeg($logo);      break;    case 3: //png      $logoim = imagecreatefrompng($logo);      break;    default:      die("logo圖片類型錯誤!");  }  //執行圖片水印處理  imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);  //輸出圖像(根據源圖像的類型,輸出為對應的類型)  $picinfo = pathinfo($picname);//解析源圖像的名字和路徑信息  $newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];  switch($picnameinfo[2]){    case 1:      imagegif($im,$newpicname);      break;    case 2:      imagejpeg($im,$newpicname);      break;    case 3:      imagepng($im,$newpicname);      break;  }  //釋放圖片資源  imagedestroy($im);  imagedestroy($logoim);  //返回結果  return $newpicname;}//測試echo imageUpdateLogo("./images/bg2.jpg","./images/s_1.png");希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選