Php 创建新的GD图像流并输出图像

Php 创建新的GD图像流并输出图像,php,image,gd,Php,Image,Gd,输出是 现在我想知道如何在服务器上存储此图像imagepng()还有第二个参数,即文件名 看 bool imagepng(资源$image[,字符串$filename[,int$quality[,int$filters]])) 文件名 保存文件的路径。如果未设置或为空,则直接输出原始图像流 注: 如果未使用quality和filters参数,则NULL无效 显示图像并将文件保存在我的测试服务器上 您需要对要保存到的目录具有写入权限 它为我提供了下载图像的选项如果您用正确且可写的文件名的字符串路

输出是

现在我想知道如何在服务器上存储此图像

imagepng()还有第二个参数,即文件名

bool imagepng(资源$image[,字符串$filename[,int$quality[,int$filters]]))

文件名

保存文件的路径。如果未设置或为空,则直接输出原始图像流

注:

如果未使用quality和filters参数,则NULL无效


显示图像并将文件保存在我的测试服务器上

您需要对要保存到的目录具有写入权限


它为我提供了下载图像的选项如果您用正确且可写的文件名的字符串路径填充第二个参数,那么它会直接保存图像。只有在参数丢失的情况下才会出现下载文件对话框(我可以想象);因此,原始图像数据直接输出到浏览器。然后,当内容类型元标头错误时,另存为。。对话框将出现。因此,这两种功能不能与单个imagepng()调用一起使用;显示图片或创建文件。我想,你可以通过输出缓冲区函数来解决这个问题。因此,如果你想同时显示图像并将其保存在同一个脚本中,可以先调用ob_start(),调用不带文件名的imagepng(),然后调用ob_get_contents将图像转换为字符串(可以写入文件),然后调用ob_end_flush()将图像显示给用户,或者调用imagepng()两次(一次不使用文件名显示,一次使用文件名保存)
<?php
header ('Content-Type: image/png');
$im = @imagecreatetruecolor(120, 20)
      or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>
...
imagepng($im);
imagepng($im, 'filename.png');
imagedestroy($im);