2011-07-30 23 views
0

我猜可能需要使用GD圖像庫,但我需要一些幫助指出正確的方向。PHP:如果圖片過寬或過高,縮小比例並限制比例。

我在一個頁面上顯示圖像,如果它的寬度超過800像素,我想將其縮小到800像素寬,但按比例調整高度,如果超過600像素高,我也想這樣做。

實現此目的的最佳方式是什麼?

+0

用'我在page'顯示圖像,是引用您嘗試使用PHP來獲得一些圖像內容和輸出,或者只是這與CSS的東西(相關,其橫在我的頭上時,我讀你的問題)。因爲在PHP中,由於PHP是服務器端語言,所以有人通常會做一些圖像處理/操作來處理上傳功能或數據庫存儲。除非你使用php作爲圖像提供者,它會找到文件,獲取內容並輸出一個圖像(你需要GD),然後像'.someimg {width:800px; height:auto}這樣簡單的css類屬性應該解決你的問題。 – toopay

回答

0

您可以通過查看 exec("/usr/bin/convert {$current_image} -resize {$width}x{$height}\> -quality 100 $dest_image", $ret_val);
這將擴大,但保持方面入手。 imageMagick命令行工具完整文檔轉換在這裏:http://www.imagemagick.org/script/convert.php

0

我有一個$ fileName(原始圖像文件名),requiered $ width和$ height max值,調用resizeImage函數。然後這個函數創建一個名爲$ finalFileName的新文件。

resizeImage(imageCreateFrom($fileName), 
      $finalFileName, 
      $width, 
      $height, 
      false); 

function resizeImage($resSrc, $fileNameDst, $nwX, $nwY, $forceResize = true) { 
    $resSrcX = imagesx($resSrc); 
    $resSrcY = imagesy($resSrc); 
    if (!$forceResize) { 
     if ($resSrcX < $nwX) { 
      $nwX = $resSrcX; 
     } 
     if ($resSrcY < $nwY) { 
      $nwY = $resSrcY; 
     } 
    } 
    if ($resSrcY/$resSrcX > $nwY/$nwX) { 
     $thumbY = $nwY; 
     $thumbX = intval($nwY * $resSrcX/$resSrcY); 
    } else { 
     $thumbX = $nwX; 
     $thumbY = intval($nwX * $resSrcY/$resSrcX); 
    } 
    $copyResource = imagecreatetruecolor($thumbX, $thumbY); 
    imagecopyresampled($copyResource, $resSrc, 0, 0, 0, 0, 
         $thumbX, $thumbY, 
         $resSrcX, $resSrcY); 
    preg_match('#\.([^\.]*)$#', $fileNameDst, $match); 
    $extension = $match[1]; 
    switch ($extension) { 
     case 'gif': 
      setTransparency($copyResource, $resSrc); 
      imagegif($copyResource, $fileNameDst); 
      break; 
     case 'jpeg': 
     case 'jpe': 
     case 'jpg': 
      imagejpeg($copyResource, $fileNameDst); 
      break; 
     case 'png': 
      setTransparency($copyResource, $resSrc); 
      imagepng($copyResource, $fileNameDst); 
      break; 
    } 
    imagedestroy($copyResource); 
}