php怎么把水印弄在右下
时间 : 2023-04-02 03:48:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
好的,关于在 PHP 中将水印添加到图像的右下角,有很多种方法和技巧,这里列举一种比较简单的实现方式。
首先,我们需要加载原始图像和水印图像,并创建一个新的图像,将原始图像复制到这个新图像中,然后再将水印图像覆盖在该图像的右下角。
以下是代码示例:
```php
$src_img = '原始图像路径';
$watermark_img = '水印图像路径';
$src = imagecreatefromjpeg($src_img);
list($width, $height) = getimagesize($src_img);
$watermark = imagecreatefrompng($watermark_img);
list($watermark_width, $watermark_height) = getimagesize($watermark_img);
$dest_x = $width - $watermark_width - 10; // 计算水印图像的 x 坐标值
$dest_y = $height - $watermark_height - 10; // 计算水印图像的 y 坐标值
imagecopy($src, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
header('Content-type: image/jpeg');
imagejpeg($src);
imagedestroy($src);
imagedestroy($watermark);
在上面的代码中,我们首先加载原始图像和水印图像,然后使用 `imagecreatefromjpeg()` 和 `imagecreatefrompng()` 函数创建这两个图像的资源,然后获取这两个图像的尺寸信息。
接下来,我们使用 `imagecopy()` 函数将水印图像覆盖在原始图像的右下角。`imagecopy()` 函数是将一个图像复制到另一个图像上的函数。其中,第一个参数为目标图像的资源,第二个参数为源图像的资源,第三个参数和第四个参数分别是目标图像的 x 坐标值和 y 坐标值,表示源图像将被复制到目标图像的哪个位置。最后两个参数为源图像的起始位置和宽度、高度。
在计算水印图像的坐标值时,我们使用了原始图像的尺寸信息,以及一个固定的值 10,这个值可以根据实际需要进行调整。
最后,我们使用 `header()` 函数将输出的内容类型设为 `image/jpeg`,然后使用 `imagejpeg()` 函数将修改后的图像输出到浏览器中,并释放占用的资源。
需要注意的是,上述示例中只适用于 JPEG 和 PNG 格式的图片,如果需要处理其他格式的图片,则需要使用相应的函数进行加载和保存。此外,为了提高程序的性能,推荐在处理完图像后,使用 `imagedestroy()` 函数释放资源。
在PHP中,可以使用GD图像库来对图像进行处理,包括添加水印、调整大小、裁剪等操作。添加水印可以使用GD库的 imagecopy() 函数将水印图像合并到原图像中。根据题目要求,我们将水印添加在原图像的右下角。
首先,需要通过GD库的函数打开原图像和水印图像:
```php
$srcImg = imagecreatefromjpeg('original.jpg'); // 打开原图像
$watermarkImg = imagecreatefrompng('watermark.png'); // 打开水印图像
然后,获取原图像和水印图像的宽度和高度:
```php
$srcImgWidth = imagesx($srcImg);
$srcImgHeight = imagesy($srcImg);
$watermarkImgWidth = imagesx($watermarkImg);
$watermarkImgHeight = imagesy($watermarkImg);
接下来,计算水印图像在原图像中的位置。根据题目要求,水印图像应该位于原图像的右下角,在离右边和底部各留出10个像素的间距。可以使用以下代码计算水印图像的位置:
```php
$watermarkX = $srcImgWidth - $watermarkImgWidth - 10;
$watermarkY = $srcImgHeight - $watermarkImgHeight - 10;
最后,使用GD库的 imagecopy() 函数将水印图像合并到原图像中:
```php
imagecopy($srcImg, $watermarkImg, $watermarkX, $watermarkY, 0, 0, $watermarkImgWidth, $watermarkImgHeight);
将添加了水印的图像输出到浏览器或保存到文件中:
```php
header('Content-Type: image/jpeg');
imagejpeg($srcImg);
imagedestroy($srcImg);
完整的代码如下:
```php
$srcImg = imagecreatefromjpeg('original.jpg'); // 打开原图像
$watermarkImg = imagecreatefrompng('watermark.png'); // 打开水印图像
$srcImgWidth = imagesx($srcImg); // 获取原图像宽度
$srcImgHeight = imagesy($srcImg); // 获取原图像高度
$watermarkImgWidth = imagesx($watermarkImg); // 获取水印图像宽度
$watermarkImgHeight = imagesy($watermarkImg); // 获取水印图像高度
$watermarkX = $srcImgWidth - $watermarkImgWidth - 10; // 计算水印图像在原图像中的X坐标
$watermarkY = $srcImgHeight - $watermarkImgHeight - 10; // 计算水印图像在原图像中的Y坐标
imagecopy($srcImg, $watermarkImg, $watermarkX, $watermarkY, 0, 0, $watermarkImgWidth, $watermarkImgHeight); // 将水印图像合并到原图像中
header('Content-Type: image/jpeg'); // 输出图像类型
imagejpeg($srcImg); // 输出图像
imagedestroy($srcImg); // 释放资源
这样,就成功将水印添加到了原图像的右下角。
上一篇
php怎么实战数据库连接
下一篇
php怎么合成一个主页
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章