2014-06-24 43 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