1.获取小程序二维码
2.改变图片大小
3.图片改为圆图
4.图片去四角边
5.生成海报
如果有帮到的可以点个赞
1.获取小程序二维码
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . config('AppID') . '&secret=' . config('AppleSecret');
$res = file_get_contents($url);
$token = json_decode($res, true)['access_token'];
$URL = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $token;
$data = [
'scene' => $scene, //二维码传入参数
'page' => $page_url, //扫码后进入页面
];
$json = json_encode($data); //数组加密
$result = api_notice_increment($URL, $json); //用CURL 进行POST请求
$path = ROOT_PATH . 'public/upload/extend/qrcode/original'; //ROOT_PATH 我使用的是TP5框架
if (!file_exists($path)) { //判断目录是否存在
mkdir($path, 0777, true);
}
$path = $path . '/' . $file_name . '.png'; //最后要写入的目录及文件名
if (!file_exists($path)) {
// 创建将数据流文件写入我们创建的文件内容中
file_put_contents($path, $result);
}
header('Content-Type: image/jpeg');
//返回小程序二维码
return request()->domain() . '/upload/extend/qrcode/original/' . $file_name . '.png';
效果图
2.改变图片大小
//改变图片大小
$cover_url='/upload/picture/20211028/thumb/medium_2ee991169473f8bcc0748be2c6592c7a.jpg'
$cover_image = \think\Image::open('./' . $cover_url);
$cover_url = ROOT_PATH . 'public/upload/extend/qrcode/cover1/'; //生成新的文件
if (!file_exists($cover_url)) { //判断目录是否存在
mkdir($cover_url, 0777, true);
}
$cover_urls = $cover_url . $file_name . '.png'; //最后要写入的目录及文件名
if (!file_exists($cover_urls)) {
//参数1数字宽带 参数2数字高度
$cover_image->thumb(340, 280, \think\Image::THUMB_CENTER)->save($cover_urls);
}
//获取结果图
$h_result['result_cover_url'] = './upload/extend/qrcode/cover1/' . $file_name . '.png';
3.图片改为圆图
//原图 TP获取当前域名
$page_url = request()->domain() . '/upload/extend/qrcode/thumbnail/' . $file_name . '.png';
$path = ROOT_PATH . 'public/upload/extend/qrcode/circular/'; //生成新文件存储图片
$paths = $path . $file_name . '.png'; //最后要写入的目录及文件名
if (!file_exists($path)) { //判断目录是否存在
mkdir($path, 0777, true);
}
if (!file_exists($paths)) {
$avatar = file_get_contents($page_url);
$result = yuanImg($avatar);
// 创建将数据流文件写入我们创建的文件内容中
file_put_contents($paths, $result);
}
return './upload/extend/qrcode/circular/' . $file_name . '.png';
效果图
3.图片去四角边
//目标图路径
$result_cover_url = './upload/extend/qrcode/cover3/' . $file_name . '.png';
$circular_url = ROOT_PATH . 'public/upload/extend/qrcode/circular2/'; //目标位置
if (!file_exists($circular_url)) { //判断目录是否存在
mkdir($circular_url, 0777, true);
}
$result_circular_urls = $circular_url . $file_name . '.png'; //最后要写入的目录及文件名
$radius = 15;
$src_img = null;
$src_img = imagecreatefromjpeg($result_cover_url );
$wh = getimagesize($result_cover_url );
$w = $wh[0];
$h = $wh[1];
$img = imagecreatetruecolor($w, $h);
//这一句一定要有
imagesavealpha($img, true);
//拾取一个完全透明的颜色,最后一个参数127为全透明
$bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
imagefill($img, 0, 0, $bg);
$r = $radius; //圆 角半径
for ($x = 0; $x < $w; $x++) {
for ($y = 0; $y < $h; $y++) {
$rgbColor = imagecolorat($src_img, $x, $y);
if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius)))
{
//不在四角的范围内,直接画
imagesetpixel($img, $x, $y, $rgbColor);
} else {
//在四角的范围内选择画
//上左
$y_x = $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//上右
$y_x = $w - $r; //圆心X坐标
$y_y = $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下左
$y_x = $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
//下右
$y_x = $w - $r; //圆心X坐标
$y_y = $h - $r; //圆心Y坐标
if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
imagesetpixel($img, $x, $y, $rgbColor);
}
}
}
}
imagepng($img, $result_circular_urls);
imagedestroy($img);
return './upload/extend/qrcode/circular3/' . $file_name . '.png';
效果图
5.生成海报
//背景图
$share_img = ROOT_PATH . 'public/upload/extend/qrcode/graph/poster2.png';
$image = \think\Image::open($share_img);
//新图地址
$new_url = ROOT_PATH . 'public/upload/extend/qrcode/result2/'; //ROOT_PATH 我使用的是TP5框架
if (!file_exists($new_url)) { //判断目录是否存在
mkdir($new_url, 0777, true);
}
//查看文件是否存在
$all_url = $new_url . $file_name . '.png'; //最后要写入的目录及文件名
try {
//水印
$image->water($thumbnail_picture, [565, 1365])->save($all_url);
//房间图
$image->water($h_result['result_cover_url'], [27, 680])->save($all_url);
//字体,这个每台电脑都有自己找找
$font = ROOT_PATH . 'public/upload/size/SOURCEHANSANSSC.OTF';
//项目
$image->text($h_result['mall_department_has_one']['name'], $font, 28, '#ffffff', [64,1180], 0, 0)->save($all_url);
//面积
if(strlen($h_result['square']) == 1){
$image->text($h_result['square'].'m²', $font, 30, '#ffffff', [338,1180], 0, 0)->save($all_url);
}elseif(strlen($h_result['square']) == 2){
$image->text($h_result['square'].'m²', $font, 30, '#ffffff', [328,1180], 0, 0)->save($all_url);
}elseif (strlen($h_result['square']) == 3){
$image->text($h_result['square'].'m²', $font, 30, '#ffffff', [315,1180], 0, 0)->save($all_url);
}
//金额
$image->text('¥'.$h_result['price'], $font, 30, '#ffffff', [530,1180], 0, 0)->save($all_url);
// //经纪人
$image->text($s_result['name'], $font, 25, '#ffffff', [232,1360], 0, 0)->save($all_url);
//联系方式
$image->text($s_result['phone'], $font, 24, '#ffffff', [232,1420], 0, 0)->save($all_url);
} catch (\Exception $exception) {
return false;
}
return request()->domain() . '/upload/extend/qrcode/result2/' . $file_name . '.png';
效果图