Php 无法显示图像,因为它包含错误
为什么这个代码不起作用Php 无法显示图像,因为它包含错误,php,Php,为什么这个代码不起作用 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> <?php header('Content-type: image/png');
<!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>
我总是收到错误图像无法显示,因为它包含错误。
。我已经在php.ini中启用了php\u gd2.dll
,并且内存限制也为128M。如果我删除标题('Content-type:image/png')代码>我没有得到错误,但我也没有看到图像。我所看到的是:-
°PNG��� IHDR���È���D���ùHíH���请注意���Ó33d���中间‰c
x�§“Nf*kÃ)Ãø�§“•5}À)äS†ÚšpJUá”a§?阿尔法2ÔŽw您不得在标题()之前输出任何内容。只需以开始您的文档,这就是您所需要的。您不能打印任何其他内容,因为它需要看起来像它自己的文件。您可以调用此image.php并向其传递一个变量,以定义要输出的图像
<?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);
?>
您应该只输出图像。您正在输出一组标记。具体地
然后将图像作为二进制文件。如果您想看到这一点,wget
从服务器上删除页面,然后尝试在编辑器中打开它。您的代码应该从开始如果您对输出进行base64编码,您可以直接使用带有
请注意,并非所有浏览器都支持数据URI(猜猜是哪个)。我将PHP脚本隔离到它自己的文件(image.PHP
)中,它工作正常:我得到了一个带有黑色斜线的灰色矩形。您的问题是试图将其嵌入到HTML文件中
您需要将PHP放在自己的单独文件中(正如我所做的,将其称为image.PHP
或更符合您需要的描述),然后创建一个HTML文件,如下所示:
<html>
<head>
<title>Document Title</title>
</head>
<body>
<img src="image.php" alt="" />
</body>
</html>
文件标题
然后,您应该可以获得所需的输出。在尝试使用PHP从图形API输出Facebook个人资料图片的jpg时,
我注意到,如果PHP文件使用UTF-8编码保存,则返回此错误,
但是如果文件是用ANSI编码保存的-
然后它工作正常。如果您有这个问题,请尝试删除脚本开头和php标记之间的任何空格字符
> <?php
我也遇到了同样的问题,解决方案是将代码的字符集从UTF-8更改为ansi或viceversa。如果服务器设置为UTF-8,而您的代码为ansi,则这不起作用,如果您的代码为ansi,而服务器也配置为UTF-8。即使您认为已删除了头()之前的所有文本,您的PHP文件可能包含
这将在编辑器中对您不可见,但您的浏览器将看到它并认为图像已损坏。您需要采取适合编辑器的步骤来删除任何BOM表。如果您使用Filezilla
上载网页,请确保选择传输类型为'Auto/Binary'
传输->传输类型->自动/二进制。对不起,我不明白。我需要做哪些更改?header()已经是php的第一行了。如果你是说我应该删除html
,head
等等,我也试过了。如果我这样做,我仍然会得到图像包含错误@Nitesh,您不必有两个文件。有两个文件更合理、更可靠。在文件开头删除额外的空格为我解决了错误:)好吧,不一定在它自己的文件中。只是输出不应该混合HTML和PNG.interest变量。您能控制web浏览器缓存此图像的方式吗?@Johan此图像不是此方法的外部资源。不会有过期标题之类的东西。这是服务页面上的文本。任何适用于页面的缓存都将应用于图像。谢谢Yuval,这一切都解决了我的问题。php文件的编码!注意PHP错误报告,尤其是5.4以后。错误不会打印在屏幕上,但会在图像中引发错误。请尝试“错误报告(0);”在你代码的顶端,为我工作。
<html>
<head>
<title>Document Title</title>
</head>
<body>
<img src="image.php" alt="" />
</body>
</html>
> <?php