资讯专栏INFORMATION COLUMN

php给图片添加文字或图片水印实现代码(二种加水印方法)

CoderStudy / 1690人阅读

摘要:有时上传图片时,需要给图片添加水印,水印一般为文字或图片水印,下面就来看看两种添加方法。拷贝并合并图像的一部分更多库函数用法,请查手册相关文章实现图片上传时添加文字和图片水印

有时上传图片时,需要给图片添加水印,水印一般为文字或图片logo水印,下面就来看看两种添加方法。

一、文字水印

文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件。效果图如下:

$dst_path = "dst.jpg";
//创建图片的实例
$dst = imagecreatefromstring(file_get_contents($dst_path));

//打上文字
$font = "./simsun.ttc";//字体路径

$black = imagecolorallocate($dst, 0x00, 0x00, 0x00);//字体颜色
imagefttext($dst, 13, 0, 20, 20, $black, $font, "快乐编程");
//输出图片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
switch ($dst_type) {
    case 1://GIF
        header("Content-Type: image/gif");
        imagegif($dst);
        break;
    case 2://JPG
        header("Content-Type: image/jpeg");
        imagejpeg($dst);
        break;
    case 3://PNG
        header("Content-Type: image/png");
        imagepng($dst);
        break;
    default:
        break;
}
imagedestroy($dst);

新创建一张图片,然后打印文字水印:

// imagecreatefromstring
// imageCreateFromPng  Create a new image from file or URL   创建图片对象

// Create a 300x100 image,新创建一张图片
$im = imagecreatetruecolor(500, 300);

// set color
$red = imagecolorallocate($im, 0xFF, 0x00, 0x00);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

// Make the background red
// function imagefilledrectangle ($image, $x1, $y1, $x2, $y2, $color) {}
imagefilledrectangle($im, 0, 0, 300, 100, $red);

// Path to our ttf font file
$font_file = "./font/Arial.ttf";


// imagefttext ($image, $size, $angle, $x, $y, $color, $fontfile, $text, $extrainfo = null )
// Draw the text "PHP Manual" using font size 13
imagefttext($im, 13, 0, 150, 50, $black, $font_file, "PHP Manual");

// Output image to the browser
header("Content-Type: image/png");

imagepng($im);
imagedestroy($im);

二、图片水印

图片水印就是将一张图片加在另外一张图片上,主要使用gd库的imagecopy和imagecopymerge。

$dst_path = "myimage.jpg";
$src_path = "http://www.logodashi.com/FileUpLoad/inspiration/636003768803214440.jpg";
//创建图片的实例
$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));
//获取水印图片的宽高
list($src_w, $src_h) = getimagesize($src_path);
//将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 30);

//如果水印图片本身带透明色,则使用imagecopy方法
// imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);

//输出图片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
switch ($dst_type) {
    case 1://GIF
        header("Content-Type: image/gif");
        imagegif($dst);
        break;
    case 2://JPG
        header("Content-Type: image/jpeg");
        imagejpeg($dst);
        break;
    case 3://PNG
        header("Content-Type: image/png");
        imagepng($dst);
        break;
    default:
        break;
}
imagedestroy($dst);
imagedestroy($src);

效果图:

三、其他有关图像处理的函数
/*
 *返回图像的大小及图像类型
// Get the size of an image
$size = getimagesize("http://image18-c.poco.cn/mypoco/myphoto/20160901/20/17857099520160901203311082.jpg?750x956_120");

print_r($size);


// 打印结果
Array
(
    [0] => 750
    [1] => 956
    [2] => 2
    [3] => width="750" height="956"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

*/


/**
 * imagecopy — 拷贝图像的一部分
 */

// bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
// 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。



/*
 *
 * http://php.net/manual/zh/function.imagecopymerge.php
 *imagecopymerge — 拷贝并合并图像的一部分
 *bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
 *
 *
 */

更多GD库函数用法,请查PHP手册:
http://php.net/manual/zh/func...

相关文章:
php实现图片上传时添加文字和图片水印

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30422.html

相关文章

  • PHP 图片制作水印方法

    摘要:我们经常能在图片上看到一些水印,一般分为图片文字或者是两种一起的结合。那么给图片加水印就非常有必要了。怎么用实现给图片加水印呢先来看看效果使用库使用库来实现效果图像处理和手册正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。 我们经常能在图片上看到一些水印,一般分为图片、文字或者是两种一起的结合。那为什么要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原作...

    sixgo 评论0 收藏0
  • php图片水印处理

    摘要:在上周的工作中,第一次接触和了解对图像的相关处理。在图像的处理中主要依赖于拓展,其主要的操作方法可以参考手册,链接和图像处理。 在上周的工作中,第一次接触和了解php对图像的相关处理。php在图像的处理中主要依赖于GD拓展,其主要的操作方法可以参考php手册,链接:GD 和图像处理。我回顾了此次工作中的功能开发,封装了一个图像处理的相关类库。 Image类库 主体功能:图片合成,水印...

    sunnyxd 评论0 收藏0
  • JAVA 水印工具类

    摘要:摘自网络图片水印工具类水印透明度水印横向位置水印纵向位置水印文字字体宋体水印文字颜色水印透明度水印横向位置水印纵向位置水印文字字体水印文字颜色给图片添加水印图片水印图片路径源图片路径目标图片路径给图片添加水印图片可设置水印图片旋转角度水 摘自网络 import java.awt.AlphaComposite; import java.awt.Color; import java.a...

    liaorio 评论0 收藏0
  • 慕课网_《Java实现图片水印》学习总结

    摘要:时间年月日星期五说明本文部分内容均来自慕课网。慕课网教学源码无学习源码第一章课程简介引言通过一个项目案例的讲解,如何在应用中实现图片水印的添加。 时间:2017年07月21日星期五说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程简介 1-1 引言 通过一...

    levius 评论0 收藏0
  • PHPWord中文手册整理

    摘要:修正中文支持的问题,使用前如果发现乱码,需要进行一些修正解决编码问题,会对输入的文字进行编码转化,如果你使用或者编码的话就会出现乱码,如果你用编码,就查找类库中所有方法中的转码将其删除,如果你采用或者编码,使用进行编码转换。 修正 中文支持的问题,使用前如果发现乱码,需要进行一些修正: 解决编码问题,PHPword 会对输入的文字进行utf8_encode编码转化,如果你使用GBK、...

    wangdai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<