无法显示图像,因为它包含错误

TCM*_*TCM 17 php

为什么这段代码不起作用?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php
        header('Content-type: image/png');
        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);

        imagepng($myImage);
        imagedestroy($myImage);
        ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我总是得到错误The image cannot be displayed because it contains errors..我已经启用了php_gd2.dll,memory_limit在php.ini中也是128M.如果我删除header('Content-type: image/png');我没有得到错误,但我也没有看到图像.我只看到这个: -

‰PNG ??? IHDR???È???d???ùHíH???PLTEÌÌÌ???Ó33d???MIDATH‰c£ Àx?§” Nf*k²Ã)Ãø?§”•5}À)ÅS†ÚšpJUà”a§²¦œ2ÔŽw<špJ‚Q0 †;?? uTBúŸ????IEND®B,`

Joh*_*han 27

您不能在header()之前输出任何内容.只需启动文档,header()然后显示用于显示图像的代码.跳过html标签.甚至不要在header()之前写一个空白行.

如果要在您的html文档中显示图像,则必须在两个文件中进行.一,称它为例如image.php,只包含包含标题的php代码.第二个文件,称为show.php或show.html,包含您喜欢的HTML代码,包括<?php.


Gor*_*don 11

如果您对输出进行base64编码,则可以直接使用数据URI方案.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php

        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);
        ob_start();
        imagepng($myImage);
        printf('<img src="data:image/png;base64,%s"/>', 
                base64_encode(ob_get_clean()));

        imagedestroy($myImage);
        ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

请注意,并非所有浏览器都支持数据URI(猜猜哪些).