PHP图像水印仅在页面上显示图像

PHP图像水印仅在页面上显示图像,php,watermark,Php,Watermark,我正在测试一个脚本,在这个脚本中,我在我的网页中为图像添加水印 脚本工作正常,图像是水印,但我的问题是页面上只显示图像 一旦我将脚本添加到我的页面,就好像网页被转换为我要添加水印的图像一样 我认为这是因为标题(“内容类型:image/jpeg”);从代码中 我需要在我的网页水印的图像,但我也需要我的网页的其余部分也显示出来 这是怎么做到的?我很不明白这是怎么回事 我使用的脚本来自 以下是我使用的代码: <?php $main_img = "Porsche_911_996_

我正在测试一个脚本,在这个脚本中,我在我的网页中为图像添加水印

脚本工作正常,图像是水印,但我的问题是页面上只显示图像

一旦我将脚本添加到我的页面,就好像网页被转换为我要添加水印的图像一样

我认为这是因为标题(“内容类型:image/jpeg”);从代码中

我需要在我的网页水印的图像,但我也需要我的网页的其余部分也显示出来

这是怎么做到的?我很不明白这是怎么回事

我使用的脚本来自

以下是我使用的代码:

<?php  

$main_img       = "Porsche_911_996_Carrera_4S.jpg"; // main big photo / picture
$watermark_img  = "watermark.gif"; // use GIF or PNG, JPEG has no tranparency support
$padding        = 3; // distance to border in pixels for watermark image
$opacity        = 100;  // image opacity for transparent watermark

$watermark  = imagecreatefromgif($watermark_img); // create watermark
$image      = imagecreatefromjpeg($main_img); // create main graphic

if(!$image || !$watermark) die("Error: main image or watermark could not be loaded!");


$watermark_size     = getimagesize($watermark_img);
$watermark_width    = $watermark_size[0];  
$watermark_height   = $watermark_size[1];  

$image_size     = getimagesize($main_img);  
$dest_x         = $image_size[0] - $watermark_width - $padding;  
$dest_y         = $image_size[1] - $watermark_height - $padding;


// copy watermark on main image
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $opacity);


// print image to screen
header("content-type: image/jpeg");   
imagejpeg($image);  
imagedestroy($image);  
imagedestroy($watermark);  

?>


注意:我从数据库获取图像路径,因此无法硬编码图像文件名,因为它是动态的。

如果您是第一次这样做,这有点令人难以置信,但一旦您看到它的工作原理,它就非常简单了。

您需要一个生成图像的脚本(例如image.php),然后主脚本引用该图像(例如
)。一个请求/脚本不可能同时返回文档和图像


(顺便说一句,这实际上是可能的,但它涉及到将图像编码为一种非常奇怪的
src
属性。相信我,你不想这么做。)

我相信你对它的工作原理感到困惑:上面的水印生成代码并不包含在生成脚本/逻辑的页面中。相反,它需要在自己的URL后面进行访问,然后通过
链接到您想要包含该图像的站点。

将此脚本与您的“主网站”脚本完全分离。在您的网站上,使用
标记,将水印脚本作为源代码


您不能像现在这样组合两种不同的
内容类型。如果要显示“网页”,则
内容类型
需要为
文本/html
。如果您只想显示一个图像,
内容类型
需要是
图像/*

Hmmm…似乎我有问题,因为我从数据库获取的图像路径是动态的:o/