15年软件开发经验 只做源码定制 互联网+定制化解决方案

15年软件开发经验,只做源码定制!

原创设计 定制开发

满足您的个性化需求

当前位置:首页 后端开发 Thinkphp5

tp5后台生成海报

教腾豪| 发布于 2021-07-12 21:31:07| 136阅读| 0点赞| 0评论
举报

生成海报,海报和二维码,组合到一起,随机二维码和固定海报生成

需要有一个固定的海报图片

$src= '2.png';
$config['image'][]=[
    'left'=>606,
    'top'=>848,
    'bottom'=>0,
    'right'=>0,
    'stream'=>0,
    'width'=>160,
    'height'=>160,
    'opacity'=>100,//透明度
    'url'=>$src,
];
$config['background']= '1.jpg';
$path='D:\php\phpstudy_pro\WWW';
if (!is_dir($path)){
    mkdir(iconv("UTF-8", "GBK", $path),0777,true);
}
$filename = 'a.jpg';
$imgss = createPoster($config,$filename);<br/>

图片

$src= '2.png';这里是需要拼到海报或照片上图片,也可以是随机的二维码

背景图片

$config['background']= '1.jpg';

这里是背景图片,海报

生成的海报照片需要指定路径存放

$path='D:\php\phpstudy_pro\WWW';

到这里,这就是调用的方法啦

把下面放法,放到公共方法里面

function createPoster($config=array(),$filename=""){
    header("content-type: image/png");
    $imageDefault = array('left'=>0,'top'=>0,'right'=>0,'bottom'=>0,'width'=>100,'height'=>100,'opacity'=>100);
    $background = $config['background'];
    $backgroundInfo = getimagesize($background);
    $backgroundFun = 'imagecreatefrom'.image_type_to_extension($backgroundInfo[2], false);
    $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']);$resWidth = $info[0];$resHeight = $info[1];$canvas=imagecreatetruecolor($val['width'], $val['height']);imagefill($canvas, 0, 0, $color);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']);}}
    $res = imagejpeg ($imageRes,$filename,90);
    imagedestroy($imageRes);

这里是封装好的方法

0

0条评论

别默默看啦~登录/注册一起参与讨论吧~

热门标签

教腾豪
微信扫一扫立即咨询
账号登录|扫码登录

立即注册 |忘记密码?

欢迎注册

已有账号马上登录

重置密码

扫码绑定微信
微信扫一扫

绑定手机号

分享到-微信

举报

  • 举报类型:

  • 举报描述:

您好,当前积分不足。

在线客服
拨打电话
17330196230 13230981129
顶部