今天起了个大早 跑到街上吃了早饭 马上回来干正事
见识下关于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把图片复制过去 但是可以改变大小
这样就可以创建小的图片做缩略图
我把我自己的原代码附上
今天就先到这里吧