2011-08-17 53 views
0

我把代碼從php.netImagecreatefrompng問題

function LoadPNG($imgname) 
{ 
    $im = @imagecreatefrompng($imgname); 

    if(!$im) 
    { 
     $im = imagecreatetruecolor(150, 30); 
     $bgc = imagecolorallocate($im, 255, 255, 255); 
     $tc = imagecolorallocate($im, 0, 0, 0); 

     imagefilledrectangle($im, 0, 0, 150, 30, $bgc); 

     imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc); 
    } 

    return $im; 
} 

header('Content-Type: image/png'); 

$path = './upload/xxx.png'; 
$img = LoadPNG($path); 

imagepng($img); 
imagedestroy($img); 

,我在瀏覽器中有消息,頁面沒有加載:收到 無法加載網頁

沒有數據,因爲服務器未發送任何數據。 以下是一些建議: 稍後重新加載此網頁。 錯誤324(net :: ERR_EMPTY_RESPONSE):服務器關閉連接而不發送任何數據。

但是,如果我將imagecreatefrompng更改爲imagecreatefromjpeg,imagepng到imagejpeg和路徑到jpeg文件。或寫incorect文件我有錯誤圖像(imagestring) - 它工作正常...

+0

有多大(分辨率)是你正在處理('/上傳/ xxx.png')PNG圖像? – Buggabill

+0

Buggabill發佈了一個很好的答案,可以幫助您調試您的問題。但在另一個說明中,php.net上發佈的示例並不是簡單地使用和準確使用。它們是用法*示例*,應該用於*幫助*您編寫自己的實現。 – adlawson

回答

1

這聽起來像一個內存問題。我想這條線

$im = @imagecreatefrompng($imgname); 

改變這種

$im = imagecreatefrompng($imgname); 

,如果你這樣做,你可能會得到一些更多的信息。只要將此代碼投入生產,請將其更改回來。您的用戶不需要看到任何警告和錯誤。如果它是一個內存問題,那麼你得到代碼的那個部分有this tidbit的信息。

+0

我刪除了「@」,但它仍然無效:http://i.imgur.com/rSbTz.png – Alexander

+0

您正在使用的圖片的分辨率是多少?對於服務器上的較大圖像,默認內存設置可能太低。 PNG圖像顯然需要比jpeg更多的內存來處理。 – Buggabill

+0

尺寸:602 x 526,尺寸:29,7 KB(30 514字節) – Alexander