找回密码
 立即注册
搜索

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

[复制链接]
发表于 2025-4-21 16:43:07 | 显示全部楼层 |阅读模式
  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);   
复制代码
免责声明: 本站部分文章来自互联网收集,仅供用于学习和交流/测试,请遵循相关法律法规,本站一切资源不代表第柒论坛立场,如有侵权/违规/后门/不妥请联系本站管理员删除。敬请谅解!侵删请致信E-mail:ailm@hlye.cn
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

快速回复 返回顶部 返回列表