PHP如何自动设置缩略图

有些时候,我们写文章的时候 没有适合的图片做缩略图 添加了缩略图又感觉不好看

我的想法是直接在后端处理缩略图 自动配图

逻辑

那我是这样想的 先找一找比较适合的背景图片 比如

我们通过php处理 需要融合一张图片在里面 然后在加上字

代码如下:先处理背景图片


 // 加载背景图片
 $background = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'] . '/static/them/images/wenz.png');
        
 // 加载要融合的图片
 $overlay = imagecreatefrompng('https://www.astrocms.cn/uploads/20240510/f56d4fc484dd900529747b7dd8cfa075.png');


好,咱们再添加标题


// 设置标题颜色和字体
$titleColor = imagecolorallocate($background, 0, 0, 0);
$fontPath = $_SERVER['DOCUMENT_ROOT'].'/static/fonts/AlimamaFangYuanTiVF-Thin.ttf'; // 字体文件路径,例如:'arial.ttf'
$fontSize = 40; // 字体大小
$title = "可能是首创的自定义表单支付功能演示";
$titleX = 360; // 标题的X坐标
$titleY = 250; // 标题的Y坐标
        
// 在背景图片上添加标题
imagettftext($background, $fontSize, 0, $titleX, $titleY, $titleColor, $fontPath, $title);


获取融合图片的尺寸


$overlayWidth = imagesx($overlay);
$overlayHeight = imagesy($overlay);
    
// 计算融合图片的位置(中下)
$overlayX = ($bgWidth - $overlayWidth) / 2;
$overlayY = $bgHeight - $overlayHeight - 250;

然后通过获得数据进行渲染 然后增加边框


// 将融合图片复制到背景图片上
imagecopy($background, $overlay, round($overlayX), round($overlayY), 0, 0, (int)$overlayWidth, (int)$overlayHeight);
$bgColor = imagecolorallocate($overlay, 255, 255, 255); // 背景颜色
$borderColor = imagecolorallocate($overlay, 0, 0, 0); // 边框颜色
$borderThickness = 10; // 边框厚度
$borderRadius = 20; // 圆角半径
// 绘制黑色边框(厚度为10px,圆角半径为20px)
for ($i = 0; $i < $borderThickness; $i++) {
     // 绘制边框
  imagerectangle($background, (int)$overlayX - $i, (int)$overlayY - $i, (int)$overlayX + (int)$overlayWidth + $i - 1, (int)$overlayY + (int)$overlayHeight + $i - 1, $borderColor);
}


最后

// 输出图片
imagejpeg($background);
    
// 销毁图片资源
imagedestroy($background);
imagedestroy($overlay); 


效果

上一篇

JavaScript 的基本术语大全

下一篇

【分享】代码分享工具《代码小抄》
评论(0)
Astro
这个人很懒什么都没有留下

文章排行