2011-02-02 73 views
2

我正在努力調整和重新採樣使用PHP的一些jpeg圖像。它需要任何大於500像素×500像素的圖像,並使最大側500像素。這應該是相對簡單的,但每次運行腳本時,它都會產生黑色的jpeg。創建的jpeg具有適當的尺寸,但不包括調整大小的圖像。 GD庫已啓用,我確定它正在查找原始圖像。我一直在尋找這塊代碼一天半沒有運氣,我沒有看到什麼?imagecopyresampled使黑盒子,但不是重採樣圖像

<?php 
$testimage = 'SandyCayCaribbeanbeach.jpg'; 
$testfolder = "testimage/testimage.jpg"; 
list($orgwidth, $orgheight, $type, $attr) = getimagesize($testimage); 

echo "org. width " . $orgwidth . "px" . "<br />"; 
echo "org. height " . $orgheight . "px" . "<br />"; 

if($orgwidth > 500 || $orgheight > 500){ 
    if($orgwidth > $orgheight){ 
     header('Content-type: image/jpeg'); 
     $ratio = $orgwidth/500; 
     $newwidth = floor($orgwidth/$ratio); 
     $newheight = floor($orgheight/$ratio); 

     $image_p = imagecreatetruecolor($newwidth, $newheight); 
     $image = imagecreatefromjpeg($testimage); 
     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

     imagejpeg($image_p, $testfolder, 100); 
    } 
    else{ 
     header('Content-type: image/jpeg'); 
     $ratio = $orgheight/500; 
     $newheight = floor($orgheight/$ratio); 
     $newwidth = floor($orgwidth/$ratio); 

     $image_p = imagecreatetruecolor($newwidth, $newheight); 
     $image = imagecreatefromjpeg($testimage); 
     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

     imagejpeg($image_p, $testfolder, 100); 
    } 
} 
    ?> 

回答

2

首先確保您打開了錯誤報告。還要確保它可以找到源圖像「SandyCayBaribbeanbeach.jpg」。

簡單if(file_exists())在處理圖像大小調整之前檢查將有助於捕獲錯誤。

+0

打開錯誤報告後,它顯示在第20行我的高度和寬度變量未定義。他們是$寬度和$高度,但應該是$ orgwidth和$ orgheight。感謝錯誤報告提示,即時通訊新的和完全忘了它。 – Andalinmicphew 2011-02-02 17:12:27

0

仔細檢查以確保您的源圖像是真正的JPEG圖像。如果您正在運行Windows,請在MS Paint中打開並重新保存爲JPEG格式。這將有助於排除它作爲不同格式的可能性。

0

我最近還在一段代碼中爭取了一段時間,發現如果未定義維度,imagecopyresampled甚至會返回1。確保設置了源高和寬度。

2

我發現,我不得不指定圖像的完整路徑一個URL即/path/to/image.jpg的

代替

http://www.blah.com/image.jpg

使其正常工作。希望它能幫助別人。