PHP生成多组图片与文字海报,PHP生成海报,PHP生成图片,PHP图片上写文字

用于合并多张图片,多行文字成一张图片

getbgqrcode()生成海报函数

1.参数说明

$imageDefault 默认图片设置
$textDefault 默认文字设置
$background 背景图
$filename 生成的文件名
$config   多张图片与文字的配置写到这里

配置参数如下

'left'=>1080,距离左侧像素
'top'=>3150, 距离顶部像素
'right'=>0,
'bottom'=>0,
'width'=>530, 宽
'height'=>530,高
'opacity'=>100 质量
$imageDefault = array('left'=>1080,'top'=>3150,'right'=>0,'bottom'=>0,'width'=>530,'height'=>530,'opacity'=>100,'url'=> tomedia($store['logo']),//图片url
);
$textDefault = array('text'=>'aaaaaaaa','left'=>500,'top'=>1600,'fontSize'=>150,       //字号'fontColor'=>'255,255,255', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",//字体路径
);
public function getbgqrcode($imageDefault,$textDefault,$background,$filename="",$config=array()){//如果要看报什么错,可以先注释调这个headerif(empty($filename)) header("content-type: image/png");//背景方法$backgroundInfo = getimagesize($background);$ext = image_type_to_extension($backgroundInfo[2], false);$backgroundFun = 'imagecreatefrom'.$ext;$background = $backgroundFun($background);$backgroundWidth = imagesx($background);  //背景宽度$backgroundHeight = imagesy($background);  //背景高度$imageRes = imageCreatetruecolor($backgroundWidth,$backgroundHeight);$color = imagecolorallocate($imageRes, 0, 0, 0);imagefill($imageRes, 0, 0, $color);imagecopyresampled($imageRes,$background,0,0,0,0,imagesx($background),imagesy($background),imagesx($background),imagesy($background));//处理了图片if(!empty($config['image'])){foreach ($config['image'] as $key => $val) {$val = array_merge($imageDefault,$val);$info = getimagesize($val['url']);$function = 'imagecreatefrom'.image_type_to_extension($info[2], false);if($val['stream']){//如果传的是字符串图像流$info = getimagesizefromstring($val['url']);$function = 'imagecreatefromstring';}$res = $function($val['url']);//$res = imagecreatefrompng($val['url']);$resWidth = $info[0];$resHeight = $info[1];//建立画板 ,缩放图片至指定尺寸$canvas=imagecreatetruecolor($val['width'], $val['height']);imagefill($canvas, 0, 0, $color);//关键函数,参数(目标资源,源,目标资源的开始坐标x,y, 源资源的开始坐标x,y,目标资源的宽高w,h,源资源的宽高w,h)imagecopyresampled($canvas, $res, 0, 0, 0, 0, $val['width'], $val['height'],$resWidth,$resHeight);$val['left'] = $val['left']<0?$backgroundWidth- abs($val['left']) - $val['width']:$val['left'];$val['top'] = $val['top']<0?$backgroundHeight- abs($val['top']) - $val['height']:$val['top'];//放置图像imagecopymerge($imageRes,$canvas, $val['left'],$val['top'],$val['right'],$val['bottom'],$val['width'],$val['height'],$val['opacity']);//左,上,右,下,宽度,高度,透明度}}//处理文字if(!empty($config['text'])){foreach ($config['text'] as $key => $val) {$val = array_merge($textDefault,$val);list($R,$G,$B) = explode(',', $val['fontColor']);$fontColor = imagecolorallocate($imageRes, $R, $G, $B);$val['left'] = $val['left']<0?$backgroundWidth- abs($val['left']):$val['left'];$val['top'] = $val['top']<0?$backgroundHeight- abs($val['top']):$val['top'];imagettftext($imageRes,$val['fontSize'],$val['angle'],$val['left'],$val['top'],$fontColor,$val['fontPath'],$val['text']);}}//生成图片if(!empty($filename)){$filename = $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/shareimg/".$filename;$res = imagejpeg ($imageRes,$filename,90);//保存到本地imagedestroy($imageRes);}else{imagejpeg ($imageRes);//在浏览器上显示imagedestroy($imageRes);}}

2.使用示例

public function creatPoster(){global $_W;global $_GPC;$imageDefault = array('left'=>1080,'top'=>3150,'right'=>0,'bottom'=>0,'width'=>530,'height'=>530,'opacity'=>100);$textDefault = array('text'=>'aaaaaaaa','left'=>500,'top'=>1600,'fontSize'=>150,       //字号'fontColor'=>'255,255,255', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);$font = $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf";$background = URL_APP_RESOURCE.'image/bg.jpg';//海报最底层得背景$config['image'][0]['url'] = $this->creatqrcode($id,$_W['mid']);//店铺logo$config['image'][1] = array('left'=>120,'top'=>1895,'right'=>0,'bottom'=>0,'width'=>1685,'height'=>860,'opacity'=>100,'url'=> tomedia($store['logo']),);$main = imagecreatefromjpeg ( $background );$width = imagesx ( $main );$fontSize = 130;$fontBox = imagettfbbox($fontSize, 0, $font, $store['storename']);$x         = ceil(($width - $fontBox[2]) / 2); //计算文字的水平位置//店名//$config['text'][]['text'] = $store['storename'];$config['text'][] = array('text'=>$store['storename'],'left'=>$x,'top'=>1820,'fontSize'=>130,       //字号'fontColor'=>'255,255,255', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);//简介$config['text'][] = array('text'=>'会员结账返'.(10 - $store['discount']) * 7 . '%','left'=>1040,'top'=>2920,'fontSize'=>70,       //字号'fontColor'=>'255,255,255', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);$config['text'][] = array('text'=>'准会员结账返'.(10 - $store['discount']) * 3 . '%','left'=>200,'top'=>2920,'fontSize'=>70,       //字号'fontColor'=>'0,0,0', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);$config['text'][] = array('text'=>$city['name'],'left'=>175,'top'=>1475,'fontSize'=>60,       //字号'fontColor'=>'251,97,87', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);$config['text'][] = array('text'=>$num,'left'=>810,'top'=>1475,'fontSize'=>60,       //字号'fontColor'=>'251,97,87', //字体颜色'angle'=>0,'fontPath'=> $_SERVER['DOCUMENT_ROOT']."/addons/weliam_merchant/app/resource/font/kaiti.ttf",);$filename = $id.time().'qrcode_bg.jpg';Store::getbgqrcode($imageDefault,$textDefault,$background,$filename,$config);$filename = URL_APP_RESOURCE.'shareimg/'.$filename;$ruleimg = URL_APP_RESOURCE.'image/share_rule.jpg';//echo "<center><img src='".$filename."' width='400'/></center>";$json = ['result' => 1, 'msg' => '0', 'img' => $filename, 'rule' => $ruleimg];new_message($json);}

php生成二维码文字图片海报相关推荐

  1. 简单的二维码生成接口,自动生成二维码,返回图片地址

    自动生成二维码,返回图片地址 本来不想写的,但是怕太久不写这个东西,就要荒废了,就先记录一下简单的东西 这里因为,返回地址的时候,通过了nginx ,我试了很多方法都抓取不到对应的IP地址, 就在ng ...

  2. 如何将图片做成二维码并加入文字?二维码文字内容的排版怎么做?

    现在二维码图片是很多人在使用的一种分享工具,通过制作二维码可以将图片.视频.文件等等多种内容,通过让他人扫码的方式获取.那么如果制作图片二维码并对图片加入注释的话,该如何来操作呢?怎样让二维码图片文字 ...

  3. vue 中生成二维码,合成海报

    1.分别引入 qrcodejs2.html2canvas 执行以下命令行 npm install qrcodejs2 npm install html2canvas 2.下载canvas2image, ...

  4. vue-qr 自动生成二维码+logo图片

    vue-qr 可根据文本内容生成二维码,还可以添加logo图片.设置logo大小.设置二维码大小.留白边距.背景图片.背景颜色等等. 1.安装 npm install vue-qr --save 2. ...

  5. 前端生成二维码与图片合成

    首先前端生成二维码 使用插件完成,插件为DrawQRCode.unitypackage  合成二维码直接使用DrawQRCode 类里提供的方法即可 生成二维码的方法 DrawCode_Color32 ...

  6. Unity 生成二维码 融合图片

    Unity 生成二维码,并将二维码和已有背景图片融合,保存到本地,,, 1.场景的搭建 2.代码的编写(参考链接) using System.IO; using UnityEngine; using ...

  7. Java解决生成二维码后图片蒙上红色背景问题

    一.在生成图片,或者将二维码放在图片上生成新图片后,生成的图片会造成红色蒙版问题,这问题是因为jdk中 ImageIO.read(inputStream);里在识别RGB的时候会出现偏差,目前公司用的 ...

  8. vue使用 vueQr,html2canvas 实现批量生成二维码并合成海报

    开始 npm install vue-qr --save // 安装依赖//使用// 1. 页面引入组件import vueQr from "vue-qr";components: ...

  9. java 通过Qrcode生成二维码添加图片logo和文字描述

    一个简单的javaweb项目 注释比较多直接上代码 附上使用的jar包Qrcode package com.fehorizon.erp.pda.utils;import java.awt.Color; ...

  10. jquery.qrcode生成带logo的二维码,同时生成带二维码的好友分享图片(js与canvas实现二维码和图片合成的海报)

    首先给大家看一下效果图(纯jQuery前端技术): 提供一下demo 源代码和jquery.qrcode文件下载: https://download.csdn.net/download/qq15577 ...

最新文章

  1. 菜鸟学Linux 第050篇笔记 dhcp
  2. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
  3. php 跳转到指定url_PHP想要实现页面跳转功能具体怎么操作?(函数标签示例)...
  4. HDU/HDOJ 2612 Find a way 双向BFS
  5. Mysql 的utf8和utf8mb4
  6. zookeeper配置与使用
  7. Leetcode2. Add Two Numbers
  8. Word删除单独页页眉与分节处理
  9. sql注入学习笔记1
  10. python图形分析_使用Python图形化分析大Log文件
  11. 《互联网人叹气图鉴》
  12. mysql全文索引与停止词
  13. 痛定思痛:电脑加装内存条一定要考虑硬件的最大内存容量
  14. 树(2021.7.11晚)
  15. Android logo图标的尺寸
  16. 华为2018软赛心得(西北36强)
  17. 【论文阅读|深读】 GraphSAGE:Inductive Representation Learning on Large Graphs
  18. DC Motors – Voltage Vs. Output Speed Vs. Torque
  19. 在线支付支付宝(一)之开发者账号申请
  20. warning C4819 的解决方法

热门文章

  1. 575. 分糖果【我亦无他唯手熟尔】
  2. 数据库中Count是什么意思和SUM有什么区别?
  3. 最新最全论文合集——基于背景知识的对话系统
  4. cf1504E - Travelling Salesman Problem
  5. Vite:Error: Cannot find module ‘worker_threads‘
  6. 【常用的办公软件】万彩办公大师教程丨文件批量压缩工具
  7. 【免费办公软件】万彩办公大师教程丨文件批量解压工具
  8. vsftpd的安装和使用
  9. 【Python3】作业车间调度,SPT规则,LPT规则
  10. 如何改变计算机内存配置文件,电脑内存使用率过高怎么解决?教你如何调整内存大小...