typecho简单制作根据文章标题生成海报封面实例

admin 轻心小站 关注 LV.19 运营
发表于Typecho博客程序版块 教程

php根据图片背景+标题生成图片封面,生成图片保存在服务器随时生成图,颜色背景不一样的图,seo优化已经封装成函数注意:图片只能是jpg,并且需要字体<?php function bgC

php根据图片背景+标题生成图片封面,生成图片保存在服务器

随时生成图,颜色背景不一样的图,seo优化

已经封装成函数

注意:图片只能是jpg,并且需要字体

  1. <?php
  2. function bgCover($url, $title,$fileUrl="/bg/img") {
  3. // 获取背景图片
  4. $bg_image = imagecreatefromjpeg($url);
  5. $bg_width = imagesx($bg_image);
  6. $bg_height = imagesy($bg_image);
  7. // 创建一个新图像,大小为背景图片的大小
  8. $image = imagecreatetruecolor($bg_width, $bg_height);
  9. // 将背景图片复制到新图像中
  10. imagecopy($image, $bg_image, 0, 0, 0, 0, $bg_width, $bg_height);
  11. // 生成随机颜色作为描边色,不能为白色
  12. do {
  13. $stroke_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
  14. } while ($stroke_color == imagecolorallocate($image, 255, 255, 255));
  15. // 生成字体颜色为白色
  16. $text_color = imagecolorallocate($image, 255, 255, 255);
  17. // 定义字体路径
  18. $font = 'SourceHanSansOLD-Bold-2.otf';
  19. // 设置字体大小
  20. $font_size = 80;
  21. // 计算标题文字的宽度和高度
  22. $text_box = imagettfbbox($font_size, 0, $font, $title);
  23. $text_width = abs($text_box[2] - $text_box[0]);
  24. $text_height = abs($text_box[5] - $text_box[3]);
  25. // 计算标题文字的位置
  26. $x = ($bg_width - $text_width) / 2;
  27. $y = ($bg_height - $text_height) / 2 + $text_height;
  28. // 给标题文字添加描边
  29. for ($i = 1; $i <= 4; $i++) {
  30. imagettftext($image, $font_size, 0, $x-$i, $y-$i, $stroke_color, $font, $title);
  31. imagettftext($image, $font_size, 0, $x+$i, $y-$i, $stroke_color, $font, $title);
  32. imagettftext($image, $font_size, 0, $x-$i, $y+$i, $stroke_color, $font, $title);
  33. imagettftext($image, $font_size, 0, $x+$i, $y+$i, $stroke_color, $font, $title);
  34. }
  35. // 添加光影效果
  36. $shadow_color = imagecolorallocatealpha($image, 255, 255, 255, 50);
  37. for ($i = 1; $i <= 4; $i++) {
  38. imagefilledellipse($image, $x+$text_width/2, $y+$i*2, $i4, $i4, $shadow_color);
  39. }
  40. // 写入标题文字
  41. imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $title);
  42. // 生成文件名
  43. $fileName = $_SERVER['DOCUMENT_ROOT'] . $fileUrl . '/' . md5($url . $title) . '.png';
  44. // 如果图片已经存在,直接返回 URL
  45. if (file_exists($fileName)) {
  46. return $fileUrl . '/' . md5($url . $title) . '.png';
  47. }
  48. // 将最终的图像保存为 PNG 文件
  49. imagepng($image, $fileName);
  50. //释放资源
  51. imagedestroy($image);
  52. return $fileUrl . '/' . md5($url . $title) . '.png';
  53. }
  54. echo bgCover('https://image.****.com/wp-content/uploads/2023/02/ysbanner-202300214-2.jpg', '告诉老莫,我想吃鱼了!!!');

效果展示:

QQ图片20230301145543.png

已经到主题里面,发布文章的时候,如果没有封面,可点击封面生成,便根据文章标题生成封面图片

123.png

文章说明:

本文原创发布于探乎站长论坛,未经许可,禁止转载。

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,探乎站长论坛平台仅提供信息存储空间服务。

评论列表 评论
发布评论

评论: typecho简单制作根据文章标题生成海报封面实例

粉丝

0

关注

0

收藏

0

已有0次打赏