
/** 封装可以制作不同位置的水印图的函数 * string $src_image,原图路径 * string $water_image,水印图路径 * string $path,水印图保存位置 * string &$error,错误代码 * int $position = 1,水印图加的位置,1代表左上角,9代表右下角 * int $pct = 20, 透明度 **/ function make_water_mark($src_image, $water_image, $path, &$error, $position, $pct) { // 验证原图资源和水印图都存在 if (!is_file($src_image)) { $error = '原图不存在'; return false; } if (!is_file($water_image)) { $error = '水印图不存在'; return false; } // 判断路径保存是否存在 if (!is_dir($path)) { $error = '保存位置不正确'; return false; } // 确认图片格式,选择适当函数 $src_info = getimagesize($src_image); $water_info = getimagesize($water_image); // echo $src_info['mime']; $allow = array( 'image/jpeg' => 'jpeg', 'image/gif' => 'gif', 'image/jpg' => 'jpg', 'image/png' => 'png', 'image/pjpeg' => 'jpeg' ); // 匹配数据 if (!array_key_exists($src_info['mime'], $allow)) { $error = "当前文件资源不允许制作水印图"; return false; } if (!array_key_exists($water_info['mime'], $allow)) { $error = "当前水印图资源不允许制作使用"; return false; } // 组合函数 $src_open = 'imagecreatefrom'.$allow[$src_info['mime']]; $water_open = 'imagecreatefrom'.$allow[$water_info['mime']]; $src_save = 'image'.$allow[$src_info['mime']]; // 打开图片资源 $src = $src_open($src_image); $water = $water_open($water_image); // 合并图片资源,产生水印 // 首先计算水印图在原图中出现的位置 $start_x = $start_y = 0; switch ($position) { case 1: break; case 2: $start_x = floor(($src_info[0] - $water_info[0])/2); break; case 3: $start_x = $src_info[0] - $water_info[0]; break; case 4: $start_y = floor(($src_info[1] - $water_info[1])/2); break; case 5: $start_x = floor(($src_info[0] - $water_info[0])/2); $start_y = floor(($src_info[1] - $water_info[1])/2); break; case 6: $start_x = $src_info[0] - $water_info[0]; $start_y = floor(($src_info[1] - $water_info[1])/2); break; case 7: $start_y = $src_info[1] - $water_info[1]; break; case 8: $start_x = floor(($src_info[0] - $water_info[0])/2); $start_y = floor(($src_info[1] - $water_info[1])/2); break; case 9: $start_x = $src_info[0] - $water_info[0]; $start_y = $src_info[1] - $water_info[1]; break; } // 合并图片资源,产生水印 if (imagecopymerge($src, $water, $start_x, $start_y, 0, 0, $water_info[0], $water_info[1], $pct)) { // 成功,保存图片 // header('Content-type:'.$src_info['mime']); $imagename = 'watermark_'.$src_image; $src_save($src, $path.'/watermark_'.$src_image); // 销毁资源 imagedestroy($src); imagedestroy($water); return $imagename; } else { // 失败 echo "水印图制作失败"; return false; } }
文章来源: PHP封装的给图片添加水印的函数
人吐槽 | 人点赞 |
发表评论