0

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

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

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

我认为这是因为 header("content-type: 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);  

?>

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

4

3 回答 3

5

如果你是第一次这样做,这有点令人难以置信,但是一旦你看到它是如何工作的,它就真的很简单。;)

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

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

于 2012-06-04T22:18:41.990 回答
2

我相信您对它的工作原理感到困惑:上面的水印生成代码并不意味着包含在页面生成脚本/逻辑中。相反,它需要在它自己的 URL 后面可以访问,然后通过链接<img src="./path/to/script"/>到您想要包含该图像的站点。

于 2012-06-04T22:18:42.273 回答
0

将此脚本与您的“主网站”脚本完全分开。在您的网站上,使用<img>以该水印脚本作为来源的标签。

你不能content-types像你看起来做的那样结合两个不同的。如果您希望出现“网页”,则content-type需要text/html. 如果您只想显示图像,则content-type需要image/*.

于 2012-06-04T22:18:58.363 回答