上传图片程序(filemanager/upload.php)
在if (!empty($_FILES) && $upload_files)
有一个move_uploaded_file()
函数,正是上传图片的源头方法,在他成功运行将图片成功上传后,再加入水印方法即可。
if (!empty($_FILES) && $upload_files) {
.... move_uploaded_file($tempFile, $targetFile); //一定要在move_uploaded_file()之后添加水印,因为之前图片还没有上传
//===========================水印图片.S
$src_path = 'mark.png';
$dst_path = $targetFile;
//创建图片的实例
$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));
//获取水印图片的宽高
list($src_w, $src_h) = getimagesize($src_path);
//获取要加水印图片的宽高
list($dst_w, $dst_h) = getimagesize($dst_path);
//将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
//imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, 50);
//如果水印图片本身带透明色,则使用imagecopy方法
imagecopy($dst, $src, ($dst_w - $src_w - 10), ($dst_h - $src_h - 10), 0, 0, $src_w, $src_h);
//输出图片
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
switch ($dst_type) {
case 1://GIF
header('Content-Type: image/gif');
imagegif($dst, $dst_path);
break;
case 2://JPG
header('Content-Type: image/jpeg');
imagejpeg($dst, $dst_path, 100);
break;
case 3://PNG
header('Content-Type: image/png');
imagepng($dst, $dst_path, 100);
break;
default:
break;
} imagedestroy($dst);
imagedestroy($src);
//===========================水印图片.E ....
}