php 合成图片 微信公众号合成海报

php合成图片

<?php
header("content-type:image/png");
date_default_timezone_set('Asia/Shanghai');
$text1="第10000名";//此处是你要往图片上加的字
//创建画布   默认为黑色 宽高为px
$im = imagecreatetruecolor(750, 1334);
//选择一张图片  注意:此图片必须是绝对路径    不能是相对路径    因为是直接访问到本地或者是服务器上的文件
$bg = imagecreatefrompng('beijing.png');
//图2
$hua = imagecreatefrompng('hua.png');

/**********此处为我要缩放的图片************/
$src_img = "fang.jpg";//目标图片
$dst_w = 380;//你要缩放之后的图的宽
$dst_h = 528;//你要缩放之后的图的高
list($src_w,$src_h)=getimagesize($src_img);//获取你原图的宽高
$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比
if ($src_scale>=$dst_scale){  // 过高
    $w = intval($src_w);
    $h = intval($dst_scale*$w);
 
    $x = 0;
    $y = ($src_h - $h)/3;
} else { // 过宽
    $h = intval($src_h);
    $w = intval($h/$dst_scale);
 
    $x = ($src_w - $w)/2;
    $y = 0;
}

$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped, $source, 0, 0, $x, $y, $src_w, $src_h);


$scale = $dst_w / $w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w * $scale);
$final_h = intval($h * $scale);
imagecopyresampled($target, $croped, 0, 0, 0, 0, $final_w,$final_h, $w, $h);//为了不让图片模糊做平滑处理
/******************/

imagecopy($im,$bg,0,0,0,0,750,1334);//背景放入画布中  具体参数上网搜  因为我上边要用到png的图像 imagecopy这个函数不会将png图像的隐藏部分显示出来  imagecopymerge这个函数png会变不透明
imagecopy($im,$target,215,425,0,0,326,528);//缩放过后的图放在背景上
imagecopy($im,$hua,138,822,0,0,468,406);//图2最后放

imagedestroy($bg);
$black = imagecolorallocate($im, 255, 255, 255);//字体颜色rgb
$font = 'fanzhengsong.ttf';//要引入的字体文件  没有的话字体不会显示   也是绝对路径
imagettftext($im, 22, 3, 310, 335, $black, $font, $text1);//字体的大小   所放置的位置
imagejpeg($im);
imagedestroy($im);
//最后创建图像输出就ok

?>
imagecreatefromjpeg函数  创建jpg图片
imagecreatefrompng函数   创建png图片

前台显示:

如果需要前台显示这个图像

<img src="....index.php">

直接访问到你的php地址就可以

唯一的坑也就是个访问路径的问题  必须是绝对路径

这个就可以实现微信生成海报放头像和名称这样类似的功能了

哪里有问题还请大家指出   及时更正


版权声明:本文为weixin_36648666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。