使用gd库给图片铺满水印
PHP一个使用GD库生成水印的方法
查看示例
/*
* 图片加水印函数
* $dst_file : 处理完成后保存到此文件路径
* $src_file :待处理的图片文件路径
* $logo_file:水印的图片文件路径
* $top :上间距
* $left :左间距
* $alpha :透明度(0-100)【特别注意:若logo_file本身已有透明效果,请务必传false】
*/
public static function fullFillLogos($dst_file, $src_file, $logo_file, $top=0, $left=0, $alpha=false) {
try {
//创建图片的实例
$dst = imagecreatefromstring(file_get_contents($src_file));
$logo = imagecreatefromstring(file_get_contents($logo_file));
//获取宽高
list($logo_w, $logo_h) = getimagesize($logo_file);
list($dst_w, $dst_h) = getimagesize($src_file);
//循环铺上水印
for($off_y=$top; $off_y+$top<$dst_h; $off_y+=$logo_h+$top) {
for($off_x=$left; $off_x+$left<$dst_w; $off_x+=$logo_w+$left) {
$width = ($off_x+$logo_w+$left>$dst_w) ? ($dst_w-$off_x-$left) : $logo_w;
$height = ($off_y+$logo_h+$top>$dst_h) ? ($dst_h-$off_y-$top) : $logo_h;
if($alpha === false) {
imagecopy($dst, $logo, $off_x, $off_y, 0, 0, $width, $height);
} else {
imagecopymerge($dst, $logo, $off_x, $off_y, 0, 0, $width, $height, $alpha);
}
}
}
//水印完成, 存档...
header('Content-Type: image/jpeg');
imagejpeg($dst, $dst_file);
imagedestroy($dst);
imagedestroy($logo);
} catch (Exception $e) {
return false;
}
return true;
}