0

私は無意識の心に最もよく知られている理由で、雪のクラッシュのような画像を生成しようとしています。

PHP5およびGDv2.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/snowcrash2.phpの(/var/www/play/snowcrash2.php:32で開始された出力)によってすでに送信されています51行目」

ヘッダー(...)を(ヘッダーを時間内に送信される可能性のある場所に配置しようとして)の最初の数行に移動すると、次のエラーが発生します(画像形式):image " http:// 127.0.0.1 / play / snowcrash2.php "エラーが含まれているため、表示できません。"

うーん...助けて?


出てきた他の唯一のトピックは、PHPとGDを使用して生成された画像が切り取られていることです。これは受け入れられた答えがなく、私が見る限り、私が抱えている問題に関連していません。

4

1 に答える 1

1

ブラウザーが画像を表示すると、画像は個別にダウンロードされ、ページに配置されます。このため、HTML と画像を 1 つのリクエストで送信することはできません。必要なのは、画像のデータのみを送信する別のページに設定された src を持つタグを持つ html/php ページです。

例: (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); 

?>
于 2009-04-07T18:26:41.600 に答える