我很难使用php标头,我正在尝试在浏览器中创建任何类型的图像而不将其保存在文件中,但无论我做什么我都无法使其工作。
例如,如果我使用php手册中的这个基本示例:
$im = imagecreate(100, 100);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
它会设置正确的标题,甚至输出你找不到图像时得到的图标。
我也使用已启用GD的xampp
,这是我的phpinfo
GD部分:
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.4.3
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 6b
PNG Support enabled
libPNG Version 1.2.46
WBMP Support enabled
XBM Support enabled
我的代码是错误还是需要配置?
答案 0 :(得分:2)
您不仅应创建图像,还应以某种方式填充图像:
error_reporting(E_ALL);
ini_set('display_errors', 1);
$im = imagecreate(100, 100) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
答案 1 :(得分:2)
PHP可能正在输出错误消息,从而弄乱了二进制图像数据。因此,在处理图像脚本时,我总是禁用display_errors
并在PHP配置中启用log_errors
;这样你就可以看到任何错误,而不会搞砸输出。如果你确定没有PHP错误,请尝试将完整的脚本输出转储到文件的开头(ob_start();
,最后是file_put_contents("outfile", ob_get_clean());
)并用十六进制分析编辑,看看是什么搞乱了巴布亚新几内亚。