最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

php实现文字水印和图片水印,支持透明效果

PHP 7556浏览 5评论

有时上传图片时需要给网站加上水印,水印可以分为文字水印和图片水印。

文字水印

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

php文字水印效果图

php文字水印效果图

实现代码如下:

$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);

图片水印

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

php图片水印效果图

php图片水印效果图

实现代码如下:

$dst_path = 'dst.jpg';
$src_path = 'src.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, 50);
//如果水印图片本身带透明色,则使用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);

转载请注明:快乐编程 » php实现文字水印和图片水印,支持透明效果

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. 这东西好,以后加水印就省事了
    xiaomingtt5年前 (2013-01-06)回复
  2. 博主呀,你的博客看起来蛮像网站后台的,哈哈。
    建筑CAD5年前 (2013-01-06)回复
    • 陈杰斌
      哈哈。
      山涧林鱼5年前 (2013-01-06)回复
  3. 代码什么的都是浮云。。。。
    十万酒5年前 (2013-01-07)回复
    • 陈杰斌
      呵呵,记录下工作上用到的功能,以后有需要就不用再重新写了。好记性不如烂笔头啊。
      山涧林鱼5年前 (2013-01-07)回复