PHP给图片添加文字或图片水印的实现代码

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

一、文字水印

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


  1. $dst_path = 'dst.jpg'; 
  2. //创建图片的实例 
  3. $dst = imagecreatefromstring(file_get_contents($dst_path)); 
  4.  
  5. //打上文字 
  6. $font = './simsun.ttc';//字体路径 
  7.  
  8. $black = imagecolorallocate($dst, 0x00, 0x00, 0x00);//字体颜色 
  9. imagefttext($dst, 13, 0, 20, 20, $black, $font, '快乐编程'); 
  10. //输出图片 
  11. list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); 
  12. switch ($dst_type) { 
  13.     case 1://GIF 
  14.         header('Content-Type: image/gif'); 
  15.         imagegif($dst); 
  16.         break; 
  17.     case 2://JPG 
  18.         header('Content-Type: image/jpeg'); 
  19.         imagejpeg($dst); 
  20.         break; 
  21.     case 3://PNG 
  22.         header('Content-Type: image/png'); 
  23.         imagepng($dst); 
  24.         break; 
  25.     default: 
  26.         break; 
  27. imagedestroy($dst);  

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


  1. // imagecreatefromstring 
  2. // imageCreateFromPng  Create a new image from file or URL   创建图片对象 
  3.  
  4. // Create a 300x100 image,新创建一张图片 
  5. $im = imagecreatetruecolor(500, 300); 
  6.  
  7. // set color 
  8. $red = imagecolorallocate($im, 0xFF, 0x00, 0x00); 
  9. $black = imagecolorallocate($im, 0x00, 0x00, 0x00); 
  10.  
  11. // Make the background red 
  12. // function imagefilledrectangle ($image, $x1, $y1, $x2, $y2, $color) {} 
  13. imagefilledrectangle($im, 0, 0, 300, 100, $red); 
  14.  
  15. // Path to our ttf font file 
  16. $font_file = './font/Arial.ttf'; 
  17.  
  18.  
  19. // imagefttext ($image, $size, $angle, $x, $y, $color, $fontfile, $text, $extrainfo = null ) 
  20. // Draw the text 'PHP Manual' using font size 13 
  21. imagefttext($im, 13, 0, 150, 50, $black, $font_file, 'PHP Manual'); 
  22.  
  23. // Output image to the browser 
  24. header('Content-Type: image/png'); 
  25.  
  26. imagepng($im); 
  27. imagedestroy($im); 

二、图片水印

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


  1. $dst_path = 'myimage.jpg'; 
  2. $src_path = 'http://www.logodashi.com/FileUpLoad/inspiration/636003768803214440.jpg'; 
  3. //创建图片的实例 
  4. $dst = imagecreatefromstring(file_get_contents($dst_path)); 
  5. $src = imagecreatefromstring(file_get_contents($src_path)); 
  6. //获取水印图片的宽高 
  7. list($src_w, $src_h) = getimagesize($src_path); 
  8. //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果 
  9. imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 30); 
  10.  
  11. //如果水印图片本身带透明色,则使用imagecopy方法 
  12. // imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h); 
  13.  
  14. //输出图片 
  15. list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path); 
  16. switch ($dst_type) { 
  17.     case 1://GIF 
  18.         header('Content-Type: image/gif'); 
  19.         imagegif($dst); 
  20.         break; 
  21.     case 2://JPG 
  22.         header('Content-Type: image/jpeg'); 
  23.         imagejpeg($dst); 
  24.         break; 
  25.     case 3://PNG 
  26.         header('Content-Type: image/png'); 
  27.         imagepng($dst); 
  28.         break; 
  29.     default: 
  30.         break; 
  31. imagedestroy($dst); 
  32. imagedestroy($src);  

效果图:

三、其他有关图像处理的函数


  1. /* 
  2.  *返回图像的大小及图像类型 
  3. // Get the size of an image 
  4. $size = getimagesize("http://image18-c.poco.cn/mypoco/myphoto/20160901/20/17857099520160901203311082.jpg?750x956_120"); 
  5.  
  6. print_r($size); 
  7.  
  8.  
  9. // 打印结果 
  10. Array 
  11.     [0] => 750 
  12.     [1] => 956 
  13.     [2] => 2 
  14.     [3] => width="750" height="956" 
  15.     [bits] => 8 
  16.     [channels] => 3 
  17.     [mime] => image/jpeg 
  18.  
  19. */ 
  20.  
  21.  
  22. /** 
  23.  * imagecopy — 拷贝图像的一部分 
  24.  */ 
  25.  
  26. // 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 ) 
  27. // 将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。 
  28.  
  29.  
  30.  
  31. /* 
  32.  * 
  33.  * http://php.net/manual/zh/function.imagecopymerge.php 
  34.  *imagecopymerge — 拷贝并合并图像的一部分 
  35.  *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 ) 
  36.  * 
  37.  * 
  38.  */  

作者:Corwien

来源:51CTO

时间: 2017-08-01
Tags: php, image

PHP给图片添加文字或图片水印的实现代码的相关文章

给GIF动态图片添加文字简单教程

喜欢玩qq表情的童鞋都知道,一般情况下给gif动态图片添加文字之后图片就变成静态的了,这当然不是我们要的效果,那么怎么才能给gif动态图片添加文字呢??? 给大家介绍一种很简单的方法,此方法适合不会不会PS新手使用. QQ聊天工具 GIF图片素材 1.在QQ聊天框里面插入图片. 2.将鼠标放在图片上,会出现一个选择框,点击上面的涂鸦,然后就可以编辑图片了. 3,编辑好图片点击完成就行了,这时候文字就加好了,很方便. 设置好参数 点击输入水印文字的拖曳确定位置 可以自由保存 4,最终效果 注意事项

word如何添加文字和图片水印

  一.word2003添加水印 点击菜单栏的"格式"--"背景"--"水印",弹出"水印"设置窗口,先选择水印类型.如图所示: 二.word2007添加水印 word2007是点击菜单栏上面的"页面布局---水印",如图所示: 然后在水印的下拉框上面选择"自定义"即可弹出添加水印的对话框,就可以在上面添加文字水印和图片水印了.如图所示: 当然我们也可以通过在ps中添加图片水印的方法,这

使用iSee图片专家给图片添加文字的方法

我们经常要为自己的相片或图片添加一些文字,而且给图片添加文字是我们在处理图片时最基本的操作.作为刚接触图片处理的朋友往往摸不着头脑,不知怎么处理,尤其是现在的软件功能很多不太好找.那么,下面我为大家介绍一下如何使用isee图片专家为图片添加文字的问题. 软件下载:iSee图片专家 v3.929中文版 1.打开isee图片专家,你会看到这个界面. 2.然后找到你要处理的图片双击,就会进入编辑图片的界面了. 3.打开图片你会看到在画面左边工具栏有一个 文字工具,单机文字工具,就进入了添加文字的状态,

光影魔术手如何给图片添加文字

  光影魔术手可以做出很多不同风格的照片,如果在照片中加上几句话,更加能突出照片的意境,今天就教你如何在图片中添加文字. 具体步骤: 1:打开你要处理的图片,依次点击"工具-文字标签"命令,就会弹出文字标签对话框. 2:选择标签1,勾选插入标签1.这样,就激活了输入框,一个标签就生效了. 3:点开文本框右边一个铅笔图案的小图标,就会出现一个下拉菜单.选择"用户输入文字",点击预览,然后在弹出的文本框中输入你要的内容,ok即可. 4: 你还可以根据自己的需要调整文字的

gif动态图片添加文字方法

  1.打开QQ聊天窗口,点击"表情"→"表情设置"按钮. 2.接着从弹出的菜单中选择"添加表情"项. 3.然后选择要处理的Gif图片并打开,选择"表情分组 我的收藏"进行添加. 4.接下来从"我的收藏"分组中将表情选择并放置到聊天窗口中. 5.然后将鼠标放置在其上,在显示出的扩展菜单中选择"点击涂鸦编辑表情"按钮. 7.接着在打开的"涂鸦编辑器"窗口中,选择&quo

PicPick如何给图片添加文字说明

  1.打开PicPick软件,然后点击工具面板上的"文字"按钮,如首图红色箭头所示. 2.然后把鼠标指针移动到图片想输入文字的地方画一个矩形方框,如下图左边红色箭头所示.再在右边红色箭头所示的文字输入面板上输入文字. 3.在文字面板上输入"经验"四个汉字,同时在下图上面蓝色箭头所指的地方可以调节汉字的大小,下面蓝色箭头所指的地方可以调节文字的颜色. 4.如下图所示是在图片上填写了红颜色的"经验"四个汉字的最终效果.

PHP图片水印函数:支持以图片和文字方式添加水印

今天是六一儿童节,嘿嘿,和大家分享下在PHP网站开发中经常用到的给图片添加水印的函数源码,由David编写,亲自测试通过,支持以图片和文字两种方式给图片添加水印.图片支持GIF,PNG,JPG三种格式,水印图片支持PNG和GIF.闲话少说,贴出我的PHP图片水印函数. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162

mage-怎么用java图片加文字水印ne

问题描述 怎么用java图片加文字水印ne 要一个完整的例子,传入的参数最好是 源文件 byte[] 文字内容 返回的是加水印之后的 byte[] 最好有注释,谢谢了 Exception in thread "main" sun.misc.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider it.geosolutions.imageio.stream.input.spi.FileImageInput

标签-Java如何在图片上添加文字

问题描述 Java如何在图片上添加文字 小白没事干想P图玩 然后想在文字上加字 发现如果用标签那么两者是分开的 如果把文字也弄做一个标签的话会被图片遮盖 希望各位大大能赐教我如何把文字添加在图片上 谢谢 解决方案 java?给图片添加文字 最近开发中要实现给图片加文字功能,本打算用Jmagick实现的,可是中文出现乱码,没有找到解决办法,就用 最原始的方法实现了,如果随知道Jmagick图片解决中文乱码问题,可以告诉我,谢谢!!! public?class?d?{? public?static?