2012-01-12 222 views
1

基本上,我有2个PHP脚本。 1个php脚本是显示的,另外1个是水印功能。在PHP中为图像添加水印

我用这个PHP与水印显示图像:

<img src="watermark1.php?image=photo.jpg> 

这是我watermark1.php:

<?php 
// this tells the browser to render jpg image 
header('content-type: image/jpeg'); 

// getting the image name from GET variable 
$image = $_GET['image']; 

// creating png image of watermark 
$watermark = imagecreatefrompng('watermark.png'); 

// getting dimensions of watermark image 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 

// creating jpg from original image 
$image_path = $image; 
$image = imagecreatefromjpeg($image_path); 
//something went wrong 
if ($image === false) { 
    return false; 
} 
// getting the dimensions of original image 
$size = getimagesize($image_path); 
// placing the watermark 5px from bottom and right 
$dest_x = $size[0] - $watermark_width - 5; 
$dest_y = $size[1] - $watermark_height - 5; 
// blending the images together 
imagealphablending($image, true); 
imagealphablending($watermark, true); 
// creating the new image 
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 
imagejpeg($image); 
// destroying and freeing memory 
imagedestroy($image); 
imagedestroy($watermark); 
?> 

然而,水印图像无法显示。我听说过GDLibrary和ImageMagicK,但我不知道这2个是关于什么的。有没有一种方法可以通过添加php代码来添加水印,还是必须导入GDLibrary/ImageMagicK。

感谢您抽出时间。

回答

0

GDLibrary是一个PHP扩展,它为PHP添加图像生成功能,例如imagejpeg或imagecopy等。 为了生成图像,您必须确保GD已在您的服务器上安装并启用。

更新

Here你可以找到有关安装GD信息。

+0

您好,感谢您的回复!我已经下载了GDLibrary!我如何启用GD,以及如何将这个GD导入到我的项目中? – dada050909 2012-01-12 03:36:33

+0

我更新了。访问上面的链接。 – 2012-01-12 09:53:35

+0

嗨,谢谢,它已经解决了。 :) – dada050909 2012-01-27 06:44:05

0

ImageMagick是一个图像处理软件。它比GD更强大,这对于某些事情来说更糟糕(例如ImageMagick完成的图像缩放比较好)。对于ImageMagick的PHP包装,请看this链接,对于GD,请看this链接。此外,如果您决定使用ImageMagick,请确保您符合要求(您在发布的链接中有他们)...... bacisally您需要在服务器上安装ImageMagick。

+0

嗨!谢谢你的帮助!我将使用GD,因为我刚刚下载了它! =) – dada050909 2012-01-12 05:31:38

+0

大多数情况下,我发现GraphicsMagick比ImageMagick更好。非常类似于使用,但总的来说,前者对我来说表现更好。值得在箭袋中同时使用箭头。 – 2012-06-15 22:28:28

0

我用不同的,像我的魅力一样工作的图像是由JavaScript操纵。如果你坚持要在服务器(PHP)上进行图像操作,那么只需在PHP文件中嵌入JavaScript。

有两种途径,但我选择了jQuery。

直接的JavaScript:http://www.patrick-wied.at/static/watermarkjs/

的Jquery:http://www.patrick-wied.at/static/watermarkjs/jq/

这种方法的诀窍是有代码的脚本(右)之前通过调用.js文件结束时运行,然后使用$。 ready.document()之后进行水印配置。然后瞧!

0

您可以添加和使用简单的PHP代码像这样与TopiLib工作自定义输出图片:(您可以同时添加图片和文字水印,太)

<?php require '../topi.lib.min'; 
$panel = new \TopiLib\TopiPanel('png transparent', 9, 0, 0, 0); 
$panel->createFromPNG($_GET['image'], true); 
$img = new \TopiLib\TopiImage('watermark.png', 'transparent png'); 
$img->startX = 100; //your custom start X position 
$img->startY = 100; //your custom start Y position 
$panel->addImage($img); 
$panel->render(); ?> 
0

下面是代码,

<?php 

header('content-type: image/jpeg'); 
$src = $_GET['src']; 
$path = pathinfo($src); 
$watermark = imagecreatefrompng('watermark.png'); 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 
$image = imagecreatetruecolor($watermark_width, $watermark_height); 
if ($path['extension']=='png') 
$image = imagecreatefrompng($src); 
else if ($path['extension']=='jpg'||$path['extension']=='jpeg') 
$image = imagecreatefromjpeg($src); 
$size = getimagesize($_GET['src']); 
$dest_x = $size[0] - $watermark_width-10; 
$dest_y = $size[1] - $watermark_height-10; 
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 50); 
imagejpeg($image); 
imagedestroy($image); 
imagedestroy($watermark); 

?> 

详细信息,Image watermark in PHP