2012-11-07 86 views
1

我看了幾個其他類似的問題,但不幸的是他們都沒有幫助解決我遇到的問題。Xampp imagecreatefrompng()產生破碎的圖像

這是腳本。

<?php 
    // returns a PNG graph from the $_GET['per'] variable 
    $per = imagecreate(302,7); 
    $background = imagecolorallocate($per, 0xFF, 0xFF, 0xFF); 
    $foreground = imagecolorallocate($per, 0x00, 0x8A, 0x01); 
    $border = imagecolorallocate($per, 0x99, 0x99, 0x99); 
    if ($_GET['per'] > 0) 
    { 
     $grad = imagecreatefrompng("images/grad.png"); 
     $per2 = imagecopy($per, $grad, 1, 1, 0, 0, ($_GET['per'] * 3), 5); 
     imagerectangle($per, 0, 0, 301, 6, $border); 
    } 

    header("Content-type: image/png"); 
    imagepng($per,NULL,5); 
?> 

我檢查了GD支持,所以我不確定是什麼問題。如果我只是建立一個簡單的酒吧,而不使用圖像,它會正常工作,但是當我嘗試用圖像構建時,它只顯示一張破碎圖像的圖片。

+0

error_log中顯示任何PHP錯誤? – drew010

+0

不,我有錯誤報告設置給所有人,我也沒有得到任何通知。 – kira423

+0

您是否通過檢查$ per2是否正確來驗證imagecopy是否正在運行? – ernie

回答

1

你需要確保per存在,否則將拋出一個不確定的指數錯誤

if ($_GET['per'] > 0) 

應該是這個

if (isset($_GET['per']) && $_GET['per'] > 0) 

,或者如果你想確保它不是空的,存在,你可以做

if (!empty($_GET['per']) && $_GET['per'] > 0) 

因爲empty()函數還檢查變量是否存在,然後檢查它是否爲空。

+0

OP的註釋表明它不是未定義的索引錯誤,因爲日誌中沒有任何內容。 。 。 – ernie

+0

我明白,但只是因爲日誌是空的並不意味着沒有錯誤發生。我拿走了他的消息來源並運行它,那是我得到的唯一錯誤。一旦解決了問題,他的腳本對我來說工作得很好。即使他沒有得到這個錯誤,最好的做法是在嘗試使用它之前檢查你的變量&index是否存在。 – Sheac

+0

即使使用它,它仍然不起作用,如果它不是代碼錯誤,它必須與Xampp – kira423