使用image5和图像显示图像的问题用php5和gd 2.0(或更高,显然)

时间:2009-04-07 18:17:13

标签: php image png gd

我正在尝试,因为我潜意识中最熟悉的原因,会产生一张像雪崩一样的照片。

使用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处开始输出)第51行的snowcrash2.php“

将标题(...)移动到第一行(试图将标题放在可能及时发送的某个位置)导致出现以下错误(图像形式):图像“{ {3}}“无法显示,因为它包含错误。”

嗯...帮助?


唯一出现的另一个话题是http://127.0.0.1/play/snowcrash2.php,它没有被接受的答案,据我所知,与我遇到的问题无关。

1 个答案:

答案 0 :(得分: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); 

?>