IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP5文字图片混合水印与缩略图的原理

BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog 2010-12-05 22:26:53 累计浏览 4,032 次
本机暂存
很多学生都在问我缩略图和打水印怎么做?就算我给了他们现成的功能类,他们也不能理解。这里我把缩略图的打水印主要用到的几个功能函数的中文解释写出来,供大家更好的学习。

1、介绍PHP水印原理和流程
 
          原始图片--》上传到dir --》 载入到内存 -》 PHP初始化 -》 水印处理

2、ImageCreateFrom* 图片载入函数

     ImageCreateFrom* 载入内存是一个将图片文件载入内存供PHP使用的过程

    imagecreatefromgif
   imagecreatefromjpeg
   imagecreatefrompng
   imagecreatefromwbmp
   imagecreatefromstring   : 通过一串图片编码

 使用格式:
   imagecreatefromgif('php100.gif');
 
3、imagecopy 图片合并函数
 
   imagecopy ( Dimg, Simg, int x, int y, int src_x, int src_y, int src_w, int src_h )

Dimg:被加水印的图片
simg:水印图片
x,y:显示在图片的位置(水印图片在图片的显示位置)
src_x,src_y:水印图片从哪里开始显示
src_w,src_h:水印图片的宽度和高度

 4、ImageCopyResized图片剪切函数
    imagecopyresized ( resource dst_image, resource src_image, int dst_x,int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )

dst_image:新图片
src_image:原来的图片
dst_x,dst_y:从什么地方开始对齐
src_x,src_y:从哪里开始剪切
int dst_w, int dst_h:新图的大小
int src_w, int src_h:原始图的大小

 在使用剪切图之前我们需要先建立一个真彩图,也就是方便内存来存储

1.2.  
3.    $image="winter.jpg";  
4.  
5.    //取得图片的大小  
6.    $img=GetImageSize($image);  
7.  
8.    //$img[2] 中存储的是图片的格式  
9.    swith($img[2]){  
10.            case 1:  
11.                 $im=@ImageCreateFormGIF($image);  
12.            break;  
13.  
14.           case 2:  
15.                 $im=@ImageCreateFormJPEG($image);  
16.           break;  
17.  
18.           case 3:  
19.                 $im=@ImageCreateFormPNG($image);  
20.            break;  
21.            }  
22.    
23.    //文字水印  
24.   $tc=imagecolorallocate($im,255,255,255);//颜色  
25.     $str=iconv("gbk","utf-8","新年");//输出内容  
26.     imagettftext($im,12,0,20,20,$tc,'simhe1.ttf',$str);//写入图片  
27.    
28.  
29.  
30.  
31.  
32.      //图片水印  
33.    $log="1.jpg";  
34.      $l=GetImageSize($log);  
35.    
36.       swith($l2]){  
37.  
38.              case 1:  
39.                 $in=@ImageCreateFormGIF($log);  
40.               break;  
41.  
42.              case 2:  
43.                $in=@ImageCreateFormJPEG($log);  
44.              break;  
45.  
46.             case 3:  
47.                $in=@ImageCreateFormPNG($log);  
48.              break;  
49.  
50.            }  
51.  
52.     //图片合并  
53.      imagecopy($im,$in,400,50,0,0,"120","345");  
54.  
55.   //输出图片  
56.    imageJpeg($im,"新图");  
57.    
58.//剪切  
59.  
60.//首先建议一个空的真彩图  
61. $new=ImageCreateTrueColor(500,500);  
62.    
63. //ImageCopyResized图片剪切函数    
64.    imagecopyresized ( resource dst_image, resource src_image, int   dst_x,int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h )    
65.  
66.  
67.?>  

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,789)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  7. Redis消息队列的若干实现方式 (累计阅读 12,088)
  8. 到底什么是MVC? (累计阅读 11,865)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,488)