怎么在php上添加水印
时间 : 2023-04-19 01:01:05声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中添加水印可以通过GD库和ImageMagick库来实现,本文将介绍使用GD库来添加水印。

GD库是一种用于动态创建图像的库,在PHP中内置的GD库包含许多函数,使得操作图像变得相对容易。我们可以使用GD库中的函数来将水印添加到图像中。

以下是添加水印的步骤:

1. 打开图像:使用 imagecreatefromjpeg(),imagecreatefromgif() 或imagecreatefrompng() 函数打开需要添加水印的图像。这些函数将图像载入到内存中,以便我们可以对它进行处理。

2. 创建水印图像:使用imagecreatefromjpeg(),imagecreatefromgif() 或 imagecreatefrompng() 函数创建一个水印图像。

3. 调整水印大小:使用 imagecopyresampled() 函数将水印图像调整为所需的大小。

4. 添加水印:使用imagecopymerge() 函数将水印图像添加到原始图像上。

5. 保存和输出图像:使用imagejpeg(),imagegif() 或 imagepng() 函数将图像保存到文件或输出到浏览器中。

下面是一个简单的PHP程序,演示了如何添加水印:

<?php

// Load the stamp and the photo to apply the watermark to

$stamp = imagecreatefrompng('watermark.png');

$photo = imagecreatefromjpeg('photo.jpg');

// Set the margins for the stamp and get the height/width of the stamp image

$marge_right = 10;

$marge_bottom = 10;

$sx = imagesx($stamp);

$sy = imagesy($stamp);

// Copy the stamp image onto our photo using the margin offsets and the photo

// width to calculate positioning of the stamp.

imagecopy($photo, $stamp, imagesx($photo) - $sx - $marge_right, imagesy($photo) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

// Output and free memory

header('Content-type: image/png');

imagepng($photo);

imagedestroy($photo);

imagedestroy($stamp);

?>

在此示例中,我们将水印图像和需要添加水印的图像从文件中加载到内存中。我们还设置了水印图像的右边距和底边距,并使用 imagecopy() 函数将水印图像添加到需要添加水印的图像上。最后,我们使用 imagepng() 函数将修改后的图像输出到浏览器中。

可以在此基础上进行修改,以创建适合自己需求的水印效果。

在PHP中添加水印可以使用GD库或ImageMagick库来实现。下面我们来具体介绍如何使用GD库来在PHP中添加水印。

首先,我们需要在服务器中安装GD库。如果服务器中已经安装了GD库,那么可以跳过这一步。否则,可以通过以下命令安装:

sudo apt-get install php-gd

然后,我们需要创建一个PHP文件,例如watermark.php。

在这个文件中,我们需要加载原始图片和水印图片,并创建一个新的图片作为输出。以下是一些示例代码,用于加载图片和创建输出:

$original_image = imagecreatefromjpeg("original.jpg");

$watermark_image = imagecreatefrompng("watermark.png");

$output_image = imagecreatetruecolor(imagesx($original_image), imagesy($original_image));

接下来,我们需要将原始图片复制到输出图片中,以便在原始图片顶部添加水印。以下是一个示例代码:

//复制原始图片到输出图片中

imagecopy($output_image, $original_image, 0, 0, 0, 0, imagesx($original_image), imagesy($original_image));

然后,我们需要将水印图片合并到输出图片中。以下是一个示例代码:

// 获取水印图片大小

$watermark_width = imagesx($watermark_image);

$watermark_height = imagesy($watermark_image);

// 获取输出图片大小

$output_width = imagesx($output_image);

$output_height = imagesy($output_image);

// 计算水印图片在输出图片中的位置

$pos_x = $output_width - $watermark_width - 10;

$pos_y = $output_height - $watermark_height - 10;

// 合并水印图片到输出图片中

imagecopy($output_image, $watermark_image, $pos_x, $pos_y, 0, 0, $watermark_width, $watermark_height);

最后,我们将输出图片写入文件。以下是一个示例代码:

// 将输出图片保存到文件

imagejpeg($output_image, "output.jpg");

完整的示例代码如下所示:

<?php

// 加载原始图片和水印图片

$original_image = imagecreatefromjpeg("original.jpg");

$watermark_image = imagecreatefrompng("watermark.png");

// 创建新的输出图片

$output_image = imagecreatetruecolor(imagesx($original_image), imagesy($original_image));

// 复制原始图片到输出图片中

imagecopy($output_image, $original_image, 0, 0, 0, 0, imagesx($original_image), imagesy($original_image));

// 获取水印图片大小

$watermark_width = imagesx($watermark_image);

$watermark_height = imagesy($watermark_image);

// 获取输出图片大小

$output_width = imagesx($output_image);

$output_height = imagesy($output_image);

// 计算水印图片在输出图片中的位置

$pos_x = $output_width - $watermark_width - 10;

$pos_y = $output_height - $watermark_height - 10;

// 合并水印图片到输出图片中

imagecopy($output_image, $watermark_image, $pos_x, $pos_y, 0, 0, $watermark_width, $watermark_height);

// 将输出图片保存到文件

imagejpeg($output_image, "output.jpg");

// 清理内存

imagedestroy($original_image);

imagedestroy($watermark_image);

imagedestroy($output_image);

?>

这是一个基本的添加水印的例子。你可以自定义水印图片的大小和位置来适应你的需要。同时,你可以自己添加一些文字,比如版权信息,以保护你的图片不被盗用。