在php中使用GD进行图像处理和输出

时间:2010-01-06 03:20:47

标签: php gd

我想用PHP GD库来控制图像的显示 - 当浏览器请求图像时,我会动态地在它的底部添加一些文本,而不是将文本保存到图像中。

我知道我可以这样做:在标题中设置MIME类型,然后使用文件名调用imagepng(...),只显示图像到浏览器,但是如何将其嵌入到文档中?像,

<img src='somefile.php?i=1' ... />

我只是使用文件名调用imagepng但没有设置标题吗?

此外,如果有人从源代码中复制图像源并在浏览器中导航到它...如果未设置标题会怎样?图像是否会像请求实际图像一样显示?

1 个答案:

答案 0 :(得分:4)

如果您在somefile.php上生成图像,当用户尝试直接访问该网址时,浏览器输出将是图像,除非他们没有指定包含图像本身的ID /名称的变量。 / p>

要在html上使用图像,我只需<img src='somefile.php?f=FILENAME' />使其更具可读性(只要您有相关的图像名称)。

确保通过重定向或显示默认图片来处理对somefile.php的未指定访问权限。

关于标题,这就是告诉浏览器它将处理哪种类型的文件,因此请确保指定它们始终。例如:

#somefile.php

header('content-type: image/jpeg');  

$watermark = imagecreatefrompng('watermark.png');  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark);

$image = imagecreatetruecolor($watermark_width, $watermark_height);  
$image = imagecreatefromjpeg($_GET['src']);  //Path to the image file

$size = getimagesize($_GET['src']);          
$dest_x = $size[0] - $watermark_width - 5;  
$dest_y = $size[1] - $watermark_height - 5;

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  
imagejpeg($image);  
imagedestroy($image);  
imagedestroy($watermark);  

因此,要在html页面上输出带有此代码的图像,您需要执行以下操作:

<img src='somefile.php?src=filePath' />

注意: 如果你不想jpg,只需将其改为png。

有关GD + PHP的更多文档here