Image.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace app\common\library;
  3. use think\Cache;
  4. use think\Hook;
  5. /**
  6. * 图片合成
  7. * Class Image
  8. * @package app\common\library
  9. */
  10. class Image
  11. {
  12. /**
  13. * 生成昵称logo
  14. * @param $name 商家昵称
  15. * @return string
  16. */
  17. public static function makeLogo($name)
  18. {
  19. if(empty($name)){
  20. return false;
  21. }
  22. $len = mb_strlen($name, 'utf8');
  23. $bg = ROOT_PATH.'/public/uploads/images/bg2.jpeg';
  24. $dst = imagecreatefromstring(file_get_contents($bg));//获取
  25. $width = imagesx($dst);
  26. $height = imagesy($dst);
  27. $fontSize = $len>=4? 60 : 80;
  28. $black = imagecolorallocate($dst, 255, 255, 255);//字体颜色(白色)
  29. $font = realpath(ROOT_PATH.'/public/fonts/yuweim.ttf');//引入字体包 必须加realpath()否则会报错
  30. $arr = imagettfbbox($fontSize,0, $font, $name);
  31. $textWidth = $arr[2]-$arr[0];
  32. imagettftext($dst, $fontSize, 0, ($width-$textWidth-35)/2, intval(($height+$fontSize)/2), $black, $font, $name);//循环添加文字
  33. header("Content-type: image/png");
  34. $path = ROOT_PATH.'/public';
  35. $pic= '/uploads/logo/'.md5($name).'.png';
  36. imagepng($dst, $path.$pic);//根据需要生成相应的图片并输出(如果需要保存本地就在后面加路径就好)
  37. imagedestroy($dst);
  38. return $pic;
  39. }
  40. }