文档章节

给图片添加水印

o
 osc_odyg6b92
发布于 2018/07/13 10:39
字数 567
阅读 12
收藏 0
php

行业解决方案、产品招募中!想赚钱就来传!>>>

<?php
    $bg_src="./bg.jpg";
    $logo_src="./logo.png";

    //获取图片的width宽、height高、mime后缀类型
    $bg_size=getimagesize($bg_src);
    $logo_size=getimagesize($logo_src);
    
    $bg_width=$bg_size[0];
    $bg_height=$bg_size[1];
    $bg_mime=$bg_size['mime'];
    
    $logo_width=$logo_size[0];
    $logo_height=$logo_size[1];
    $logo_mime=$logo_size['mime'];
    
    $position=0;//水印相对背景图的位置;0表示位置在左上角,1表示位置在上边中间,2表示位置在右上角,3表示位置在左侧中间,4表示位置在中心,5表示位置在右侧中间,6表示位置在左下角,7表示位置在下边中间,8表示位置在右下角
    $alpha=100;//水印的透明度0~100
        
    //1.打开两张图片  
    function openimage($mime,$src){
        switch ($mime){
            case "image/jpeg":
                $img=imagecreatefromjpeg($src);
                break;
            case "image/png":
                $img=imagecreatefrompng($src);
                break;
            case "image/gif":
                $img=imagecreatefromgif($src);
                break;
            case "image/wbmp":
                $img=imagecreatefromwbmp($src);
                break;
            case "image/xbm":
                $img=imagecreatefromxbm($src);
                break;
        }
        return $img;
    }
    
    $bg=openimage($bg_mime,$bg_src);
    $logo=openimage($logo_mime,$logo_src);
    
    //2.合并两张图片
    switch ($position){
        case 0:
            $x=0;
            $y=0;
            break;
        case 1:
            $x=$bg_width/2-$logo_width/2;
            $y=0;
            break;
        case 2:
            $x=$bg_width-$logo_width;
            $y=0;
            break;
        case 3:
            $x=0;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 4:
            $x=$bg_width/2-$logo_width/2;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 5:
            $x=$bg_width-$logo_width;
            $y=$bg_height/2-$logo_height/2;
            break;
        case 6:
            $x=0;
            $y=$bg_height-$logo_height;
            break;
        case 7:
            $x=bg_width/2-$logo_width/2;
            $y=$bg_height-$logo_height;
            break;
        case 8:
            $x=$bg_width-$logo_width;
            $y=$bg_height-$logo_height;
            break;
    }
    
    imagecopymerge($bg,$logo,$x,$y,0,0,$logo_width,$logo_height,$alpha);

    //3.通知浏览器以图像形式展现
    header("content-type:image/png");
    
    //4.输出图像
    imagepng($bg);
    
    //5.释放资源
    imagedestroy($bg);
    imagedestroy($logo);   

?>

若要将添加水印后的图片保存下来而非仅显示在浏览器中,则须在“4.输出图像”的步骤中使用imagepng()一类函数的另一形式:imagepng($bg,'生成图片的路径名称.后缀');

//3.通知浏览器以图像形式展现,若仅需保存无需在浏览器显示则注释这句
    header("content-type:image/png");
    
    //4.输出图像
    imagepng($bg);  //若仅需保存无需在浏览器显示则注释这句

    //若要保存图像:
    //获取底板图片的文件扩展名
    $ext=pathinfo($bg_src)['extension'];
    //生成一个随机且唯一性的文件名
    $filename=md5(uniqid(microtime(true),true)).".".$ext;
    //设置要输出的文件路径
    $filepath="./".$filename;
    switch ($ext) {
        case 'jpg':
        case 'jpeg':
        case 'jpe':
            imagejpeg($bg,$filepath);
            break;
        case 'png':
            imagepng($bg,$filepath);
            break;
        case 'gif':
            imagegif($bg,$filepath);
            break;
        case 'bmp':
        case 'wbmp':
            imagewbmp($bg,$filepath);
            break;
        case 'xbm':
            imagexbm($bg,$filepath);
            break;
    }

 

下一篇: marquee标签详解
o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
jQuery仿亚马逊风格图片滚动插件--amazon_scroller.js

亚马逊是美国甚至是全世界最大的网络电子商务公司,它的网站也相对简单,不花哨。这款图片滚动效果正是模仿自亚马逊网站,自定义参数比较多,可以设置图片滚动间隔、是否显示标题、图片大小、...

dowebok
2013/04/04
2.2K
1
CSS编译工具--Peaches

Peaches是一个基于Node的CSS编译工具,用于自动合成CSS Sprite。 Peaches 追求简单、自然的CSS书写方式! 大致的工作原理如下: 1. 我们在书写样式时,对每个需要使用背景图片的元素,进行单...

sliuqin
2013/04/12
592
0
给你一面3D墙看图片视频--Cooliris

想要更酷的3D浏览体验,试试这款扩展吧。浏览本地图片、google图片搜索结果,或是查看新闻、影音网站,都可以实现流畅的3D效果哟~~ 点击浏览器右上方的Cooliris按钮,出现Cooliris页面,Cha...

匿名
2012/11/09
1.6K
0
SBook

实现基本的阅读器功能。 作者说:项目将几种技术整合在一起,做成的一步电子阅读器(木有UI和产品,界面比较粗糙)。可以读取沙盒中的小说和图片,也可以读取在线图片(SAE)。项目使用ARC。项...

匿名
2012/12/04
1.9K
0
简单的广告栏

实现简单的广告栏效果。即: 1、下载图片,点击图片自动打开对应链接。 2、每5秒滚动播放图片。 3、自定义UIPageControl样式,用 icon 自定义 UIPageControl 的点。 [Code4App.com]...

匿名
2012/12/05
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

Vim清除最后一个搜索突出显示 - Vim clear last search highlighting

问题: Want to improve this post? 想要改善这篇文章吗? Provide detailed answers to this question, including citations and an explanation of why your answer is correct. 提供此问题......

技术盛宴
56分钟前
23
0
原子属性和非原子属性有什么区别? - What's the difference between the atomic and nonatomic attributes?

问题: What do atomic and nonatomic mean in property declarations? 属性声明中atomic和nonatomic是什么意思? @property(nonatomic, retain) UITextField *userName;@property(atomic, ......

fyin1314
今天
7
0
马化腾每天刷 Leetcode?代码你打算写到几岁?

本文作者:o****0 前几天,一张未证真伪的截图流传,图中显示马化腾几乎每天都会在 Leetcode 上提交代码。 截图还贴出一个 Leetcode 账户地址。该地址的头像已从马化腾的照片换成腾讯 logo,...

百度开发者中心
前天
13
0
滴滴 3000+ Kylin Cube 背后的实践经验揭秘

本次分享主要有三个部分:Kylin 在滴滴的整体应用、架构的实践经验、滴滴全局字典最新版本的实现以及 Kylin 最新实时 OLAP 探索经验分享。 Kylin 在滴滴的应用&架构 Kylin 在滴滴的三类应用场...

浪尖聊大数据
昨天
9
0
ssh“权限太开放”错误 - ssh “permissions are too open” error

问题: I had a problem with my mac where I couldn't save any kind of file on the disk anymore. 我的Mac出现问题,无法再在磁盘上保存任何类型的文件。 I had to reboot OSX lion and r......

javail
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部