用php处理图片水印(文字水印和图片水印)

来源:互联网 发布:黑客用python做什么 编辑:程序博客网 时间:2024/04/20 00:55

今天起了个大早 跑到街上吃了早饭 马上回来干正事

 

见识下关于php如何处理图片水印的练习

 

先认识几个函数

 

GetImageSize();

 

用法如下

 

                                  $image="111.jpg";
                                  $im=GetImageSize($image);

 

//其中 111.jgp是在同一个文件夹下的图片文件,如果不在同一文件夹下,要加上路径

 

得到的$im是个关于图片信息的数组:

例如我的例子结果是:

 

Array( [0] => 380 [1] => 591 [2] => 2 [3] => width="380" height="591" [bits] => 8 [channels] => 3 [mime] => image/jpeg)

 

可以用获取的函数信息来做一些判断和修改,如图片的大小信息,图片的宽和高等

 

然后是一个函数组:

幻灯片 3.O{font-size:149%;}<!--.sld{left:0px !important;width:6.0in !important;height:4.5in !important;font-size:103% !important;}-->

 

                                                               ImageCreateFromGIF()

                                                               ImageCreateFromJPEG()

                                                               ImageCreateFromPNG()

 

这几个函数组的作用是把图片的信息读到php里,因为我们是在php内部处理图像,所以要先把它读进去。而具体要用哪个函数就要对图片的格式进行判断  ImageCreateFromGIF 就是对应 gif格式的图片  其他以此类推

在程序中我们可以用这样一个switch语句来判断:

 

            switch($im[2])                // 这里对应的$im[2]里的信息是图片的格式  $im[2]=1对应gif

                                                  //                                                           $im[2]=2对应jpeg

                                                  //                                                           $im[2]=3对应 png

 

 

{
case 1:
$im=ImageCreateFromGIF($image);
break;

case 2:
$im=ImageCreateFromJPEG($image);
break;

case 3:
$im=ImageCreateFromPNG($image);
break;
}

 

接下是文字水印的处理了认真看

 

$te=imagecolorallocate($im,255,255,255);    //设置字的颜色,这里设为白色

$str=iconv("gbk","UTF-8","新年快乐 www.byland.com"); //设置文字的内容和编码,很简单吧

imagettftext($im,12,0,20,20,$te,'simhei.ttf',$str);

//这句是关键,我来解释下

  $im是目标图片,就是要被打上水印的图片(不过已经被读取到php里了)这里是它的变量$im,不懂的看前面

 12是x坐标的起始位置

 0是y坐标的起始位置

 20是大小

$te是设置好的颜色

simhei.ttf这是一个字体文件 不过必须和所调用它的php文件在同一目录下 所以可以从c:/windows/fonts/simhei.ttf里把它拷过来

 

header("Content-type: image/jpeg");
ImageJpeg($im);

 

这样就可以把图片现在在测试的网页里了

 

 

在来看看如何处理图片水印!

 

因为我们的处理都是在php里面实现的(o(∩_∩)o...哈哈不是用ps)所以要把当作水印的小图片读取到php里面去

操作跟上面一样啦 看代码

 


$logo="apache.gif";
$in=GetImageSize($logo);

switch($in[2])
{
case 1:
$in=ImageCreateFromGIF($logo);
break;

case 2:
$in=ImageCreateFromJPEG($logo);
break;

case 3:
$in=ImageCreateFromPNG($image);
break;
}

 

其实处理的语句就一句

 

                                                     imagecopy($im,$in,100,500,0,0,'259','32');

$im           目标图片

$in            水印图片

100,500  打水印的位置(在目标图中)

0,0         截取水印图片的开始的位置

'259'       大小

'32'          大小

 


header("Content-type: image/jpeg");
ImageJpeg($im); 

一下就可以把有水印的图片打出来了

注意ImageJpeg($im,'dddd.jpg');就是不显示在网页中 把处理好的图片创建在所在文件夹下

 

这里还给大家介绍个小操作

$new=ImageCreateTrueColor(38,59);
ImageCopyResized($new,$im,0,0,0,0,38,59,380,591);

 

ImageCreateTrueColor()用于创建一个指定大小的空图片

ImageCopyResized把图片复制过去 但是可以改变大小

这样就可以创建小的图片做缩略图

 

我把我自己的原代码附上

 

 

 

今天就先到这里吧

 

 

原创粉丝点击