当我们辛辛苦苦写出一篇文章并为其配上精美的图片,并准备在互联网上分享时,这就得注意了,有可能你精心准备的图片将成为别人唾手可得的免费资源。如果是在自己的服务器搭建博客发布文章,就得更加小心了,一不小心就成为采集工具的长期饭票,看似增加了访问量,但并不是真正的访问量,而且如果采集者直接采集的图片地址,那么你就免费给别人打工了,无效的访问量不说,还免费提供图片,浪费服务器资源,给别人做嫁妆。于是,防盗链、加水印、禁止跨域等手段出现了,鉴于此,本文只简单的介绍通过php给图片加水印。


1.环境:

    服务器:linux,

    php:7.1 开启gd库,gd库版本2.1

    php框架:tp5.1


2.准备工作:

    通过composer下载thinkphp的图像扩展(不写原生 ,tp的图像处理在原生基础上封装了。)

    composer require topthink/think-image

    操作完成之后将会在vendor目录下的topthink里面多一个 ‘think-image’目录

    2544204669963206

    这是一个标准的第三方类库,在代码里面直接使用就可以了

    ps:composer网上有很多教程,在此不再赘述


3.实现

    3.1图片水印

    在控制器里面

   

    假设当前入口文件目录下面有一个img/200514ac73i7.png文件使用open方法打开

    03189525165483986



   而水印文件为wt.jpg

8301022183735185




$image = \think\Image::open('./image.png');

        /* * 测试添加图片水印
         * */
        public function watermark(){
        	
            $image = \think\Image::open('img/200514ac73i7.png');

            $image->water('wt.jpg',7)->save('img/200514ac73i7.png');            
          
        }

效果如下

04591498991372034

在左下角已经添加了一张水印


water方法的第二个参数表示水印的位置,默认值是WATER_SOUTH,可以传入下列\think\Image类的常量或者对应的数字:

//常量,标识左上角水印
const WATER_NORTHWEST = 1; 
//常量,标识上居中水印
const WATER_NORTH     = 2; 
//常量,标识右上角水印
const WATER_NORTHEAST = 3; 
//常量,标识左居中水印
const WATER_WEST      = 4; 
//常量,标识居中水印
const WATER_CENTER    = 5; 
//常量,标识右居中水印
const WATER_EAST      = 6; 
//常量,标识左下角水印
const WATER_SOUTHWEST = 7; 
//常量,标识下居中水印
const WATER_SOUTH     = 8; 
//常量,标识右下角水印
const WATER_SOUTHEAST = 9; 


3.2文字水印

文字水印比较多,相关参数如下

参数默认描述
text不能为空添加的文字
font不能为空字体文件路径
size不能为空字号,单位是像素
color#00000000文字颜色
locateWATER_SOUTHEAST文字写入位置
offset0文字相对当前位置的偏移量
angle0文字倾斜角度


 /*
         * 测试添加水印
         * */
        public function watermark(){
            $image = \think\Image::open('b2.png');

            $image->text('浅唱春天','static/font/pingfang.ttf',20,'#808080',7, [5,-5])->save('b.png');
        }

效果如下

7521297284948143


最后修改:2020 年 04月 23日 23:25:36

文章声明:非特殊说明,本文版权归 凌萍分享 所有,转载请注明出处
本文标题:如何给图片库加水印
本文标签:水印,图片
如果觉得本篇文章对你有用,请随意赞赏;赞赏将用于服务器、域名开支