返回列表 发布新帖

PHP 怎样实现图片平铺与倾斜水印效果?看这篇优化代码!

2061 0
suxiaosu 发表于 15 小时前 | 查看全部 阅读模式 <

马上注册,结交更多好友,享用更多功能,让你轻松玩转小K网。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. // 图片和水印文件路径
  2. $img = 'test.jpg';
  3. $source = 'source.png';
  4. // 参数设置,值越大水印越稀(水印平铺的越少)
  5. $ww = 0;  // 每个水印的左右间距
  6. $hh = 0;  // 每个水印的上下间距
  7. // 水印图片旋转角度
  8. $angle = 30;
  9. // 水印透明度
  10. $opacity = 20;
  11. // 获取图片和水印的信息
  12. $imgInfo = getimagesize($img);
  13. $sourceInfo = getimagesize($source);
  14. // 创建水印图像资源
  15. $waterFun = 'imagecreatefrom' . image_type_to_extension($sourceInfo[2], false);
  16. $water = $waterFun($source);
  17. // 水印图片旋转
  18. $water = imagerotate($water, $angle, imageColorAllocateAlpha($water, 0, 0, 0, 127));
  19. // 获取水印图片旋转后的宽度和高度
  20. $waterWidth = imagesx($water);
  21. $waterHeight = imagesy($water);
  22. // 设定水印图像的混色模式
  23. imagealphablending($water, true);
  24. // 创建图片图像资源
  25. $imgFun = 'imagecreatefrom' . image_type_to_extension($imgInfo[2], false);
  26. $thumb = $imgFun($img);
  27. // 定义平铺数据
  28. $xLength = $imgInfo[0] - 10; // x轴总长度
  29. $yLength = $imgInfo[1] - 10; // y轴总长度
  30. // 循环平铺水印
  31. for ($x = 0; $x < $xLength; $x += $waterWidth + $ww) {
  32. for ($y = 0; $y < $yLength; $y += $waterHeight + $hh) {
  33. imagecopymerge($thumb, $water, $x, $y, 0, 0, $waterWidth, $waterHeight, $opacity);
  34. }
  35. }
  36. // 输出图片
  37. header("Content-type: " . $imgInfo['mime']);
  38. $outputFunction = 'image' . image_type_to_extension($imgInfo[2], false);
  39. $outputFunction($thumb);
  40. // 销毁图片资源
  41. imagedestroy($thumb);
  42. // 销毁水印资源
  43. imagedestroy($water);   
复制代码


回复

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表