2009-04-07 45 views
0

我試圖,爲我的無意識的頭腦最知道的原因,生成一場雪崩般的圖片。imagesetpixel問題,並顯示圖像與php5和GD 2.0(或更高,顯然)

使用PHP5和GD V2.0(或更高版本),我用下面的PHP/HTML:

<?php 

      $x = $y = 100; 

      $gd = imagecreatetruecolor($x,$y); 

      $w = imagecolorallocate($gd, 255, 255, 255); 
      $b = imagecolorallocate($gd, 0, 0, 0); 


      for ($r=1; $r <= $y; $r++) { 

       for ($c=1; $c <= $x; $c++) { 


         if (rand(0,1) == 0) { 
          $rand = $w; 
            } 

         else { 
          $rand = $b; 
            } 

        imagesetpixel($gd,$r,$c,$rand); 

          } 


         } 


echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title></title> 
    <link rel="stylesheet" type="text/css" href="css/stylesheet.css" /> 

</head> 

<body page="snowcrash2"> 

    <?php 

     echo "<div id=\"snowcrashimg\">"; 



header('Content-Type: image/png'); 
      imagepng($gd); 



     echo "</div>"; 


    ?> 

</body> 

</html> 

我試圖遍歷的每一個「行」的每一「列」圖像,將像素值設置爲1或0以反映黑色或白色。 (警告:無法修改標題信息 - 在/ var/www/play中已經發送(在/var/www/play/snowcrash2.php:32開始的輸出)的標題) /snowcrash2.php on line 51「

將標頭(...)移動到(嘗試將標頭放在某處,可能會及時發送)的第一對夫婦行會導致以下錯誤(以圖像形式):形象「http://127.0.0.1/play/snowcrash2.php」無法顯示,因爲它包含錯誤「

嗯...幫助


唯一的其他話題就是這一個Generated image using PHP and GD is being cut off,它沒有被接受的答案,而且,就我所知,與我遇到的問題有關。

回答

1

當瀏覽器顯示圖像時,它會單獨下載並放置在頁面上。因此,您無法在一個請求中發送HTML和圖片。你需要的是一個html/php頁面,它有一個標籤,src被設置爲另一個頁面,只會發送圖像的數據。

如: (的index.php)

<html> 
<body> 
<image src="pic.php" /> 
</body> 
</html> 
現在

在被稱爲另一個文件(pic.php),你會產生圖像和發送發送回用「內容類型」的首部,響應絕對沒有別的(除了其他頭可能)

例如,從http://www.webdeveloper.com/forum/showpost.php?p=879552&postcount=2

<?php 

$number = ""; 
for ($i = 1; $i <= $lenght; $i++) 
{ 
    $number .= rand(0,9).""; 
} 

$width = 11*$lenght; 
$height = 30; 

$img = ImageCreate($width, $height); 
$background = imagecolorallocate($img,255,255,255); 
$color_black = imagecolorallocate($img,0,0,0); 
$color_grey = imagecolorallocate($img,169,169,169); 
imagerectangle($img,0, 0,$width-1,$height-1,$color_grey); 
imagestring($img, 5, $lenght, 7, $number, $color_black); 
//////// VERY IMPORTANT 
header('Content-Type: image/png'); 
//////// VERY IMPORTANT 
imagepng($img); 
imagedestroy($img); 

?> 
+0

採取的先生,你是一個天才* *謝謝! :)我現在想要做的就是把它變成一個函數,並且能夠從窗體傳遞x和y值......嘆息...;) – 2009-04-07 19:00:04