我正在测试一个脚本,我在网页上为图像加水印。
脚本工作正常,图像是水印但我的问题是只有图像显示在页面上。
只要我将脚本添加到我的页面,就像网页被转换为我正在加水印的图像。
我认为这是因为标题(“content-type:image / jpeg”);来自代码。
我需要在我的网页上为图片添加水印,但我也需要显示其余的网页。
这是怎么做到的?我很困惑这是如何工作的。
我使用的脚本来自here
这是我正在使用的代码:
<?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);
?>
注意:我从数据库中获取图像路径,因此无法对图像文件名进行硬编码,因为它是动态的。
答案 0 :(得分:5)
如果你是第一次这样做,这有点令人难以置信,但是一旦你看到它是如何工作的,它就非常简单。 ;)
您需要一个生成图像的脚本(例如image.php),然后您的主脚本会引用该图像(例如<img src="image.php">
)。一个请求/脚本不可能同时返回文档和图像。
(PS。它实际上是可能的,但它涉及将图像编码为一种非常奇怪的src
属性。你不想这样做,相信我。)
答案 1 :(得分:2)
我相信你对这是如何工作感到困惑:上面的水印生成代码并不意味着包含在生成脚本/逻辑的页面中。相反,它需要在它自己的URL后面访问,然后通过<img src="./path/to/script"/>
链接到您想要包含该图像的网站。
答案 2 :(得分:0)
将此脚本与“主要网站”脚本完全分开。在您的网站上,使用<img>
标记,并将该水印脚本作为源。
你不能像你正在做的那样组合两个不同的content-types
。如果您希望显示“网页”,则content-type
必须为text/html
。如果您只想显示图片,content-type
必须为image/*
。