最新公告
  • 欢迎您光临站长源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • php怎么看图片加水印

    正文概述 管理员   2024-08-23   134

    在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库需要在服务器上安 装相应的库。


    站长源码网 » php怎么看图片加水印

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元