2014-06-24 41 views
3

我已經創建了一個代碼來生成隨機模式圖像。它會創建一個具有給定寬度和高度的圖像,並用小的40x40像素矩形填充圖像。 這是我的代碼:在PHP中使用GD庫進行圖像繪製

<?php 

$width = 1000; 
$height = 600; 

$image_p = imagecreate($width, $height); 
$baseR = 255 - rand(0, 100); 
$baseG = 255 - rand(0, 100); 
$baseB = 255 - rand(0, 100); 

for ($i = 0; $i <= floor($width/40); $i++){ 
for ($j = 0; $j <= floor($height/40); $j++){ 
    $val = floor(100 * (rand(0, 100)/100)); 
    $r = $baseR - $val; 
    $g = $baseG - $val; 
    $b = $baseB - $val; 
    $color = imagecolorallocate($image_p, $r, $g, $b); 
    imagefilledrectangle($image_p, $i * 40, $j * 40, (($i + 1) * 40), (($j + 1) * 40), $color); 

} 
} 

imagejpeg($image_p, 'my_dir/test.jpg'); 

>

當我設置寬度爲像640的值,高度爲400,但有沒有問題,如果我將寬度設置爲1000,高度爲? 800,圖像右側將出現空白區域,矩形未覆蓋該區域。 我在delphi中實現了相同的代碼,它工作完美,但在PHP ...!

+0

這個空白區域的大小是40的幾倍嗎?如果是這樣,那麼有一些數學/ fencepost錯誤。如果它是一個不可思議的非40倍尺寸,那麼很奇怪的事情正在發生。 –

+0

我不這麼認爲,因爲我甚至使用過這個代碼,它也沒有工作:($ j = 0; $ j <0; $ i = 0; $ i <= 1000; $ i ++){ { } = 1000; $ j ++){ – Agha

+0

我認爲它應該是'<'而不是'<=',但無法測試。 –

回答

2

變化imagecreateimagecreatetruecolor

你創建255種最大色彩的調色板基於圖像。您最後沒有使用顏色進行分配,並且正在回收調板上最後一個顏色的剩餘塊。

+0

非常感謝!它的工作! – Agha

+0

不客氣;) – Brian