2012-03-10 29 views
5

मैं किसी दिए गए आकार की पूरी तरह से यादृच्छिक छवि उत्पन्न करने की कोशिश कर रहा हूं।एक पूरी तरह यादृच्छिक छवि कैसे उत्पन्न करें?

<?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); 
?> 

समस्या 4 पंक्तियों के बाद यह बंद हो जाता है कि यादृच्छिक किया जा रहा है और अगर आप को imagecreate बदलने इस
Sample of problem

+3

भरे आयत के बजाय 'imagesetpixel()' का उपयोग करें। 1x1 आयत की तुलना में एक पिक्सेल सेट करने के लिए बहुत कम ओवरहेड। –

+0

@MarcB उस टिप के लिए धन्यवाद, इसे तेज़ी से बना दिया है, लेकिन यह अभी भी एक ही समस्या से पीड़ित है – Gricey

+1

4x64 = 256, जो कि 8 बिट छवि की सीमा है (क्योंकि आप imagecreateTRUECOLOR() का उपयोग नहीं कर रहे हैं) जो कुछ भी हो सकता है। –

उत्तर

5

की तरह एक ठोस रंग से भर जाता है:

यहाँ मैं अब तक किया है imagecreatetruecolor इसे काम करना चाहिए (पैरामीटर समेत सब कुछ वही है)

+0

हू, कभी अनुमान लगाया नहीं होगा। पूरी तरह से काम करता है, धन्यवाद – Gricey

1

प्रत्येक पिक्सेल के लिए एक नया रंग आवंटित करके, आप रंग ताल को जल्दी से थका रहे हैं। प्रति पंक्ति 64 पिक्सल पर 4 पंक्तियां 256 है। ताल के पूर्ण होने के बाद, कोई भी नया रंग ताल पर अंतिम रंग का उपयोग करेगा।

मिशू का उत्तर रंगीन छवि की बजाय एक पूर्ण रंगीन छवि का उपयोग करता है, यही कारण है कि आप अधिक रंग आवंटित करने में सक्षम हैं।

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

0

दोनों अलग palletes साथ चित्र बनाने पीएचपी डॉक्स में इस उत्तर देखें। सही रंग में अधिक रंग सीमाएं होती हैं ताकि छविक्रेटेट्रू रंग()

संबंधित मुद्दे