我想用PHP GD库来控制图像的显示 - 当浏览器请求图像时,我会动态地在它的底部添加一些文本,而不是将文本保存到图像中。
我知道我可以这样做:在标题中设置MIME类型,然后使用文件名调用imagepng(...)
,只显示图像到浏览器,但是如何将其嵌入到文档中?像,
<img src='somefile.php?i=1' ... />
我只是使用文件名调用imagepng
但没有设置标题吗?
此外,如果有人从源代码中复制图像源并在浏览器中导航到它...如果未设置标题会怎样?图像是否会像请求实际图像一样显示?
答案 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。