2012-03-10 12 views
5

Belirli bir boyutta tamamen rastgele bir görüntü oluşturmaya çalışıyorum.Tamamen rastgele bir görüntü nasıl oluşturulur?

<?php 
$Width = 64; 
$Height = 32; 

$Image = imagecreate($Width, $Height); 
for($Row = 1; $Row <= $Height; $Row++) { 
    for($Column = 1; $Column <= $Width; $Column++) { 
     $Red = mt_rand(0,255); 
     $Green = mt_rand(0,255); 
     $Blue = mt_rand(0,255); 
     $Colour = imagecolorallocate ($Image, $Red , $Green, $Blue); 
     imagesetpixel($Image,$Column - 1 , $Row - 1, $Colour); 
    } 
} 

header('Content-type: image/png'); 
imagepng($Image); 
?> 

sorun 4 satır sonra rastgele olmak durur olduğunu ve size imagecreate değiştirirseniz bu
Sample of problem

+3

Kullanmak daha iyidir. Doldurulmuş dikdörtgen yerine imagesetpixel() işlevini kullanın. 1x1 dikdörtgenden daha fazla tek bir piksel ayarlamak için daha az ek yük. –

+0

@MarcB Bu ipucu için teşekkürler, daha hızlı yaptı ama hala 8 bitlik bir görüntü için sınır olan – Gricey

+1

4x64 = 256, aynı sorundan muzdarip (imagecreateTRUECOLOR() kullanmadığınız için). –

cevap

5

gibi katı bir renk ile doldurur: Burada

Ben bugüne kadar ne olduğunu imagecreatetruecolor çalışmalıdır (her şey parametreler de dahil olmak üzere aynıdır)

+0

Huh, bunu asla tahmin edemezdim. Mükemmel çalışıyor, teşekkürler – Gricey

1

Her piksel için yeni bir renk tahsis ederek, renk damağını hızla tüketiyorsunuz. Satır başına 64 pikselde 4 satır 256'dır. Damak dolduğunda, yeni bir renk damadaki son rengi kullanır.

Mishu yanıtı, tam renkli bir resim kullanır ve renkli bir görüntü oluşturur, bu nedenle daha fazla renk ayırabilirsiniz.

http://us.php.net/manual/en/function.imagecolorallocate.php#94785

0

İkisi farklı paletler ile görüntüler oluşturmak PHP docs bu yanıta bakın. Gerçek renk daha fazla renk aralığına sahiptir, bu nedenle imagecreatetruecolor()