php图片放大合成加入字体操作示例介绍_php技巧

来源:脚本之家  责任编辑:小易  
目录
前言一. 获取图片二. 把二维码图片放大三. 多个图片合成四. 添加文字并居中五. 完整的代码

前言

之前只是生成二维码,现在需要把二维码放在一个背景图并且需要有文字介绍。之前没做过,现在做好了记录一下。

一. 获取图片

$background_path = root_path() . 'public/event/template.jpg'; //背景图片地址
$qrcode_path = root_path() . 'public/event/qrcode/1653635892.png'; // 二维码图片地址
// 背景图
$background_image = imagecreatefromjpeg($background_path);
// 二维码图
$qrcode_image = imagecreatefrompng($qrcode_path);

备注:图片地址必须是绝对地址

二. 把二维码图片放大

//获取图片的属性,第一个宽度,第二个高度,类型1=>gif,2=>jpeg,3=>png
list($qrcode_x, $qrcode_y) = getimagesize($qrcode_path);
// 把二维码图片放大到1200像素
$size = 1200;
// 新建一个画布
$finalQrcode = imagecreatetruecolor($size, $size);
// 把二维码图片放到新的画布上
imagecopyresampled($finalQrcode, $qrcode_image, 0, 0, 0, 0, $size, $size, $qrcode_x, $qrcode_y);

备注:图片放大其实就是新建一个你需要尺寸的大小的画布,把之前的图片移到新的画布上,通过参数去控制图片在画布的位置及大小

三. 多个图片合成

// 把背景和二维码图片合成在一起
//获取图片的属性,第一个宽度,第二个高度,类型1=>gif,2=>jpeg,3=>png
list($background_width,$background_height) = getimagesize($background_path);
// 新建一个画布,用来填充背景
$finalImage = imageCreatetruecolor($background_width,$background_height);
// 图像分配颜色
$color = imagecolorallocate($finalImage, 255, 255, 255);
//设置居中图片的X轴坐标位置
$x = ($background_width-$size)/2;
//设置居中图片的Y轴坐标位置
$y = 430;
// 用于用给定的颜色填充图像
imagefill($finalImage, 0, 0, $color);
// 将颜色定义为透明色
imageColorTransparent($finalImage, $color);
// 用背景来填充画布
// 目标图 源图 目标X坐标点 目标Y坐标点 源的X坐标点 源的Y坐标点 目标宽度 目标高度 源图宽度 源图高度
imagecopyresampled($finalImage,$background_image,0,0,0,0,$background_width,$background_height,$background_width,$background_width);
//二维码图片在背景上的位置 $x横坐标,$y纵坐标
imagecopymerge($finalImage,$finalQrcode, $x,$y,0,0,$size,$size, 100);

四. 添加文字并居中

图片的文字进行居中,需要我们通过图片的尺寸,文字需要占的尺寸去计算。

现在有一个composer库(stil/gd-text)可以实现该功能。

composer require stil/gd-text
$text = '测试测试测试测试测试测试测试';
// 字体的不同会导致汉字写入图片乱码
$font = root_path() . 'public/font/Alibaba-PuHuiTi-Medium.ttf'; // 字体的绝对地址
$showY = 2480-800;
$box = new Box($finalImage);
$box->setFontFace($font);
$box->setFontColor(new Color(0, 60, 121));//字体颜色
$box->setFontSize(160);//字体大小
$box->setLineHeight(2);//行高
$box->setBox(-22, $showY, 2480, 200);
$box->setTextAlign('center', 'top'); // 字体居中
$box->draw($text);
Header("Content-type: image/jpeg");
//将画布保存到指定的文件
imagejpeg($finalImage, root_path() . 'public/event/qrcode/111.png');

五. 完整的代码

$background_path = root_path() . 'public/event/template.jpg'; //背景图片地址
$qrcode_path = root_path() . 'public/event/qrcode/1653635892.png'; // 二维码图片地址
// 背景图
$background_image = imagecreatefromjpeg($background_path);
// 二维码图
$qrcode_image = imagecreatefrompng($qrcode_path);
//获取图片的属性,第一个宽度,第二个高度,类型1=>gif,2=>jpeg,3=>png
list($qrcode_x, $qrcode_y) = getimagesize($qrcode_path);
// 把二维码图片放大到1200像素
$size = 1200;
$finalQrcode = imagecreatetruecolor($size, $size);
imagecopyresampled($finalQrcode, $qrcode_image, 0, 0, 0, 0, $size, $size, $qrcode_x, $qrcode_y);
// 把背景和二维码图片合成在一起
//获取图片的属性,第一个宽度,第二个高度,类型1=>gif,2=>jpeg,3=>png
list($background_width,$background_height) = getimagesize($background_path);
$finalImage = imageCreatetruecolor($background_width,$background_height);
$color = imagecolorallocate($finalImage, 255, 255, 255);
//设置居中图片的X轴坐标位置
$x = ($background_width-$size)/2;
//设置居中图片的Y轴坐标位置
$y = 430;
imagefill($finalImage, 0, 0, $color);
imageColorTransparent($finalImage, $color);
imagecopyresampled($finalImage,$background_image,0,0,0,0,$background_width, $background_height,$background_width,$background_width);
//图片在背景上的位置 $x横坐标,$y纵坐标
imagecopymerge($finalImage,$finalQrcode, $x,$y,0,0,$size,$size, 100);
$text = '测试测试测试测试测试测试测试';
$font = root_path() . 'public/font/Alibaba-PuHuiTi-Medium.ttf';
$showY = 2480-800;
$box = new Box($finalImage);
$box->setFontFace($font);
$box->setFontColor(new Color(0, 60, 121));//字体颜色
$box->setFontSize(160);//字体大小
$box->setLineHeight(2);//行高
$box->setBox(-22, $showY, 2480, 200);
$box->setTextAlign('center', 'top'); // 字体居中
$box->draw($text);
Header("Content-type: image/jpeg");
//将画布保存到指定的文件
imagejpeg($finalImage, root_path() . 'public/event/qrcode/111.png');
exit();

到此这篇关于php图片放大合成加入字体操作示例介绍的文章就介绍到这了,更多相关php图片放大内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:PHP实现图片加水印功能PHP实现多张图片上传功能的示例代码php初学者教程之图片缩放和裁剪利用PHP实现图片等比例放大和缩小的方法详解PHP 图片合成、仿微信群头像的方法示例php图片合成方法(多张图片合成一张)php技术实现加载字体并保存成图片

  • 本文相关:
  • php下关于cannot use a scalar value as an array的解决办法
  • 编译php 5.2.14+fpm+memcached(具体操作详解)
  • php使用pear实现mail发送功能 windows环境下配置pear
  • php面向对象之反射功能与用法分析
  • 解析link_mysql的php版
  • 实用php会员权限控制实现原理分析
  • php实现多维数组转字符串和多维数组转一维数组的方法
  • php中unable to fork报错简单解决方法
  • php判断一个数组是否为有序的方法
  • php错误、异常处理机制(补充)
  • php图片合成方法(多张图片合成一张)
  • 下列PHP怎么加入跑马灯字体颜色特效
  • php 生成png 图片 字体本身是斜体字 生成图片 缺一块
  • 这个图片的PHP代码怎么写 还有就是红色字体的js代码怎么写 ...
  • php将四张图片并排合成一张
  • PHP将多张图片排列合成一张JPG
  • PHP怎么将透明图片合成
  • php如何实现让加入图片的文字居中
  • php点击字体变粗,怎么操作?
  • php技术实现加载字体并保存成图片
  • PHP图片处理之图片背景、画布操作
  • 请问怎样在php程序里加入图片超链接
  • php实现图片上传并进行替换操作
  • php代码怎么实现多张图片合成
  • PHP上传图片的操作用POST方式传递到处理页面后是直接用$...
  • php 能加入的图片类型有哪些
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧php实现图片加水印功能php实现多张图片上传功能的示例代码php初学者教程之图片缩放和裁剪利用php实现图片等比例放大和缩小的方法详解php 图片合成、仿微信群头像的方法示例php图片合成方法(多张图片合成一张)php技术实现加载字体并保存成图片php下关于cannot use a scalar value as an array的解决办法编译php 5.2.14+fpm+memcached(具体操作详解)php使用pear实现mail发送功能 windows环境下配置pearphp面向对象之反射功能与用法分析解析link_mysql的php版实用php会员权限控制实现原理分析php实现多维数组转字符串和多维数组转一维数组的方法php中unable to fork报错简单解决方法php判断一个数组是否为有序的方法php错误、异常处理机制(补充)php中json_decode()和json_encode(php 数组和字符串互相转换实现方法php 字符串中是否包含指定字符串的多种方法php中使用curl实现get和post请求的方法php中iconv函数使用方法php日期转时间戳,指定日期转换成时间戳php 页面跳转到另一个页面的多种方法方法总结php中文处理 中文字符串截取(mb_substr)和获取中php下intval()和(int)转换使用与区别利用phpexcel实现excel数据的导入导出(全步骤详细php多进程编程之僵尸进程问题的理解php递归创建多级目录php mail()函数使用及配置方法php面向对象程序设计之命名空间与自动加载类详解ubuntu下编译安装xcache for php5.3 的具体操作步骤windows下的php5.0详解记录一次排查php脚本执行卡住的问题thinkphp5.1 框架钩子和行为用法实例分析php简单实现防止sql注入的方法php实现图片上传时添加文字和图片水印技巧
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved