2011-06-15 52 views
-1

嗨我想在顯示細節部分時調整圖像大小。爲此,我檢查了許多PHP腳本,但它不能在我的語言環境中工作。某些顯示圖像路徑的腳本必須以/開頭,但是當我給出它的展示圖像未找到時。另外,大多數腳本演示頁面都顯示假圖像。使用PHP5和JQuery調整圖像尺寸

回答

2

最好的辦法是同時上傳圖像剪切圖像。請使用GD庫找到下面的圖像裁剪代碼,它可以幫助你。

<?php 
function createThumb($upfile, $dstfile, $max_width, $max_height){ 
    $size = getimagesize($upfile); 
    $width = $size[0]; 
    $height = $size[1]; 
    $x_ratio = $max_width/$width; 
    $y_ratio = $max_height/$height; 
    if(($width <= $max_width) && ($height <= $max_height)) { 
      $tn_width = $width; 
      $tn_height = $height; 

    } elseif (($x_ratio * $height) < $max_height) { 
      $tn_height = ceil($x_ratio * $height); 
      $tn_width = $max_width; 

    } else { 
      $tn_width = ceil($y_ratio * $width); 
      $tn_height = $max_height; 

    } 
    if($size['mime'] == "image/jpeg"){ 

      $src = ImageCreateFromJpeg($upfile); 
      $dst = ImageCreateTrueColor($tn_width, $tn_height); 
      imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
      imageinterlace($dst, true); 
      ImageJpeg($dst, $dstfile, 100); 
    } else if ($size['mime'] == "image/png"){ 
      $src = ImageCreateFrompng($upfile); 
      $dst = ImageCreateTrueColor($tn_width, $tn_height); 
      imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
      Imagepng($dst, $dstfile); 

    } else { 

      $src = ImageCreateFromGif($upfile); 
      $dst = ImageCreateTrueColor($tn_width, $tn_height); 
      imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height,$width, $height); 
      imagegif($dst, $dstfile); 
    } 
} 

//usage 

if(isset($_FILES['upload_Image']['name']) && $_FILES['upload_Image']['name']!=='') { 
    $ext = substr($_FILES['upload_Image']['name'], strpos($_FILES['upload_Image']['name'],'.'), strlen($_FILES['upload_Image']['name'])-1); 

    $imgNormal = time().$ext; 
    $normalDestination = "Photos/Orignal/" . $imgNormal; 
    $httpRootLarge = "Photos/Large/" . $imgNormal; 
    $httpRootSmall = "Photos/Small/" . $imgNormal; 
    $httpRootThumb = "Photos/Thumb/" . $imgNormal; 
    move_uploaded_file($_FILES['upload_Image']['tmp_name'], $normalDestination); 
    createThumb($normalDestination,$httpRootLarge,680,604); #For 604x604 Image 
    createThumb($normalDestination,$httpRootSmall,500,300); #For 500x300 Image 
    createThumb($normalDestination,$httpRootThumb,130,100); #For 130x100 Image 
} 
?> 
+0

你自己寫了嗎? http://pastebin.com/Ed2YHV6w – mplungjan 2011-06-22 09:18:06

0

我想你需要ImageMagick。你可以在Google中找到很多例子,我只有Perl例子。

1

有兩種選擇:

  1. 創建圖像的縮略圖(通過PHP圖形庫),並將其存儲(獲得更好的性能)。
  2. 使用PHP圖形庫動態調整圖像大小並顯示它。

您也可以參考此頁面瞭解詳情:http://php.net/manual/book.image.php