一、水印制作
1.水印文字
PHP 中为图片打上水印文字主要是通过 GD 库提供的 imagettftext() 函数来实现的。
其过程为:载入图片 =》 调好水印文字的颜色 =》 打上水印
<?php$img = 'Desert.jpg';$img_info = getimagesize($img);switch($img_info[2]) { case 1: $res = imagecreatefromgif($img); break; case 2: $res = imagecreatefromjpeg($img); break; case 3: $res = imagecreatefrompng($img); break; }$te = imagecolorallocate($res,225,225,225);imagettftext($res,12,rand(0,10),20,80,$te,'msyh.ttf',"我的博客 www.woqilin.net");switch($img_info[2]) { case 1: header("Content-type: image/gif"); imagegif($res);以 GIF 格式将图像输出到浏览器 break; case 2: header("Content-type: image/jpeg"); imagejpeg($res); break; case 3: header("Content-type: image/png"); imagepng($res); break; }?>
2.水印图片
PHP 中为图片打上图片水印是通过 imagecopy() 函数来实现的。
<?php
$img = 'Desert.jpg';
$img_info = getimagesize($img);
switch($img_info[2]) {
case 1:
$res = imagecreatefromgif($img);
break;
case 2:
$res = imagecreatefromjpeg($img);
break;
case 3:
$res = imagecreatefrompng($img);
break;
}
$logo = 'logo-mongodb.png';
$logo_info = getimagesize($logo);
switch($logo_info[2]) {
case 1:
$res_logo = imagecreatefromgif($logo);
break;
case 2:
$res_logo = imagecreatefromjpeg($logo);
break;
case 3:
$res_logo = imagecreatefrompng($logo);
break;
}
imagecopy($res,$res_logo,100,100,0,0,210,90);
switch($img_info[2]) {
case 1:
$res = imagegif($res,'new.gif');
break;
case 2:
$res = imagejpeg($res,'new.jpg');
break;
case 3:
$res = imagepng($res,'new.png');
break;
}
?>
二、缩略图
在 PHP 中要生成图片的缩略图,主要是靠函数 imagecopyresized() 来实现。
<?php
$img = 'Desert.jpg';
$img_info = getimagesize($img);
switch($img_info[2]) {
case 1:
$res = imagecreatefromgif($img);
break;
case 2:
$res = imagecreatefromjpeg($img);
break;
case 3:
$res = imagecreatefrompng($img);
break;
}
$new = imagecreatetruecolor(400,400);
imagecopyresized($new,$res,0,0,0,0,400,400,$img_info[0],$img_info[1]);
header("Content-type: image/png");
imagepng($new);
?>