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

在PHP中添加水印是一种常见的图片处理操作,它可以为图片添加一个不透明的标志或文字,以提高图片的版权保护和实用性。下面介绍一种基于GD库的PHP添加水印的方法。

首先,需要开启PHP的GD库扩展,并加载所需的图像文件。使用函数imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif()创建所需的图像对象,这些函数分别用于读取JPEG、PNG或GIF格式的图像文件。

下一步是为水印文字或标志设置颜色、字体、大小和位置。可以使用函数imagettftext()或imagestring()将文字或标志添加到原始图像上。使用函数imagecopy()或imagecopymerge()来将水印图像叠加到原始图像上。

最后,将新图像输出到浏览器或保存到硬盘上。使用函数imagejpeg()、imagepng()或imagegif()实现这一步。

下面是一个示例的PHP代码,演示如何添加水印:

<?php

//加载原始图像

$src_img = imagecreatefromjpeg("test.jpg");

//设置水印文字、字体、颜色和透明度

$watermark_text = "COPYRIGHT @ MY WEBSITE";

$font = "arial.ttf";

$font_size = 16;

$color = imagecolorallocate($src_img, 255, 255, 255); // 设置文字颜色为白色

$alpha = 50; //设置透明度为50%

//使用imagettftext()函数将水印文字添加到原始图像上

imagettftext($src_img, $font_size, 0, 10, 30, $color, $font, $watermark_text);

//加载水印图像

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

//使用imagecopymerge()函数将水印图像添加到原始图像上

imagecopymerge($src_img, $watermark_img, 0, 0, 0, 0, imagesx($watermark_img), imagesy($watermark_img), $alpha);

//将新图像输出到浏览器

header('Content-Type: image/jpeg');

imagejpeg($src_img);

//保存新图像到硬盘上

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

//释放内存

imagedestroy($src_img);

imagedestroy($watermark_img);

?>

在上面的示例中,首先加载了一个名为“test.jpg”的JPEG格式原始图像。然后,使用imagettftext()函数将水印文字“COPYRIGHT @ MY WEBSITE”添加到原始图像的左上角。接下来,加载一个名为“watermark.png”的PNG格式水印图像,并使用imagecopymerge()函数将其添加到原始图像上。最后,新图像被输出到浏览器并且保存到硬盘上。

这是一种使用GD库在PHP中添加水印的方法,它可以被扩展和修改以满足特定的需求。

在PHP中,使用GD库可以方便地对图片进行处理,包括加水印。下面是一种常见的加水印方法:

1. 创建一个画布

首先,需要创建一个画布,即一个空白的图片。可以使用imagecreatefromXXX函数来创建画布。比如,可以使用imagecreatefromjpeg函数创建JPEG格式的画布,imagecreatefrompng函数创建PNG格式的画布。假设你要在图片中心加水印,那么可以根据原始图片的宽和高来确定画布的大小。

```php

// 假设原图为$source_file,水印图为$watermark_file

$source_image = imagecreatefromjpeg($source_file);

$watermark_image = imagecreatefrompng($watermark_file);

$source_width = imagesx($source_image); // 原图宽度

$source_height = imagesy($source_image); // 原图高度

$watermark_width = imagesx($watermark_image); // 水印图宽度

$watermark_height = imagesy($watermark_image); // 水印图高度

$canvas_width = $source_width; // 画布宽度为原图宽度

$canvas_height = $source_height; // 画布高度为原图高度

$canvas_image = imagecreatetruecolor($canvas_width, $canvas_height); // 创建画布

2. 复制原图到画布中

将原图复制到画布中,可以使用imagecopy函数。将原图的左上角点放在画布的左上角。

```php

imagecopy($canvas_image, $source_image, 0, 0, 0, 0, $source_width, $source_height);

3. 将水印图复制到画布中

将水印图复制到画布中,可以使用imagecopy函数。将水印图的中心点放在画布的中心。

```php

$watermark_top = ($canvas_height - $watermark_height) / 2; // 水印图在画布中的top值

$watermark_left = ($canvas_width - $watermark_width) / 2; // 水印图在画布中的left值

imagecopy($canvas_image, $watermark_image, $watermark_left, $watermark_top, 0, 0, $watermark_width, $watermark_height);

4. 输出水印图片

最后,可以将加上水印的画布输出。输出时,需要指定输出格式和输出位置。可以使用imagejpeg函数输出JPEG格式的图片,使用imagepng函数输出PNG格式的图片。

```php

header('Content-type: image/jpeg'); // 输出JPEG格式的图片

imagejpeg($canvas_image);

完整的代码如下:

```php

$source_file = 'source.jpg'; // 原图路径

$watermark_file = 'watermark.png'; // 水印图路径

$source_image = imagecreatefromjpeg($source_file);

$watermark_image = imagecreatefrompng($watermark_file);

$source_width = imagesx($source_image); // 原图宽度

$source_height = imagesy($source_image); // 原图高度

$watermark_width = imagesx($watermark_image); // 水印图宽度

$watermark_height = imagesy($watermark_image); // 水印图高度

$canvas_width = $source_width; // 画布宽度为原图宽度

$canvas_height = $source_height; // 画布高度为原图高度

$canvas_image = imagecreatetruecolor($canvas_width, $canvas_height); // 创建画布

// 复制原图到画布中

imagecopy($canvas_image, $source_image, 0, 0, 0, 0, $source_width, $source_height);

// 将水印图复制到画布中

$watermark_top = ($canvas_height - $watermark_height) / 2; // 水印图在画布中的top值

$watermark_left = ($canvas_width - $watermark_width) / 2; // 水印图在画布中的left值

imagecopy($canvas_image, $watermark_image, $watermark_left, $watermark_top, 0, 0, $watermark_width, $watermark_height);

// 输出水印图片

header('Content-type: image/jpeg'); // 输出JPEG格式的图片

imagejpeg($canvas_image);

需要注意的是,如果需要将加上水印的图片保存到文件中,可以使用imagejpeg或imagepng函数,将文件名作为第二个参数传入。同时也需要注意的是,使用GD库需要在服务器上安装相应的库。