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图片放大内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • php图片合成方法(多张图片合成一张)

    1.多张图片合成一张比如: 图片合成,可以显示在浏览器上面同时保存到文件夹下面 实例如下所示: <?php /** * 图片合并 **/ $pic_list = array( 'img2.png', 'img2.png', 'logo.png', 'logo.png', 'logo.png', 'img2.png', 'img2.png', 'img2.png', 'img2.png' ); $pic_list = array_slice($pic_list, 0, 9); // 只操作前9个图

  • 利用PHP实现图片等比例放大和缩小的方法详解

    复制代码 代码如下: function resizeimage($srcfile,$mySize){    $size=getimagesize($srcfile);    switch($size[2]){    case 1:    $img=imagecreatefromgif($srcfile);    break;    case 2:    $img=imagecreatefromjpeg($srcfile);    break;    case 3:    $img=imagecr

  • PHP实现图片加水印功能

    这里分享下php给图片加水印的几个自定义函数 给图片加水印首先需要开启GD库. 用到的php函数是imagecopymerge () 和 imagecopy () imagecopymerge 函数可以支持两个图像叠加时,设置叠加的透明度 imagecopy 函数则不支持叠加透明. 基本概念就啰嗦到这,下边是几个函数的讲解 在图像上打上LOGO水印. logo透明的png图像,logo.png , 使用imagecopymerge函数,可以实现打上透明度为30%的水印图标 (可是当我的图片是jp

  • PHP 图片合成、仿微信群头像的方法示例

    本文实例讲述了PHP 图片合成.仿微信群头像的方法.分享给大家供大家参考,具体如下: 参考文章: 作者:凯歌~,php图片合成方法(多张图片合成一张)https://www.jb51.net/article/129037.htm. 经过测试,略作调整和注释,感谢分享. 欢迎提出改善优化意见! 示例代码: /** * 合成图片 * @param array $pic_list [图片列表数组] * @param boolean $is_save [是否保存,true保存,false输出到浏览器]

  • php技术实现加载字体并保存成图片

    下面通过一段代码给大家详解介绍下php技术实现加载字体并保存成图片. // Set the content-type header("Content-type: image/png"); // Create the image $im = imagecreatetruecolor(400, 100); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallo

  • PHP实现多张图片上传功能的示例代码

    首先要知道这个函数 move_uploaded_file(); 接下来是我们的input框,和我们的html页面 这里我们是增加的input框我们也可以写写一个属性    multiple="multiple"   这样就可以ctrl多选图片了 <html> <head><title>多个文件上传表单</title></head> <body> <style> form{ margin: 20px; p

  • php初学者教程之图片缩放和裁剪

    php程序中改变图片大小的函数大多数人都想到用imagecopyresized(),不过经过测试比较发现,使用imagecopyresampled()改变的图片质量更高. 1.imagecopyresampled的使用 1.目标函数资源 2.源图像资源<要采样的图片资源> 3.x(0,0指图左上角) 4.y(x,y确定一个坐标,坐标确定了把采样的部分放到目标图像资源的位置) 5.源x(0,0指图右上角) 6.源y(源x与源y确定一个坐标,你要采用的原图像资源的某个部分的起始位置) 7.w 8.

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

    目录 前言 一. 获取图片 二. 把二维码图片放大 三. 多个图片合成 四. 添加文字并居中 五. 完整的代码 前言 之前只是生成二维码,现在需要把二维码放在一个背景图并且需要有文字介绍.之前没做过,现在做好了记录一下. 一. 获取图片 $background_path = root_path() . 'public/event/template.jpg'; //背景图片地址 $qrcode_path = root_path() . 'public/event/qrcode/1653635892

  • Android中imageView图片放大缩小及旋转功能示例代码

    一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" android:scaleType="fitCenter" 第二步:获取屏幕的宽度 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixels 第三

  • PHP图像处理 imagestring添加图片水印与文字水印操作示例

    本文实例讲述了PHP图像处理 imagestring添加图片水印与文字水印操作.分享给大家供大家参考,具体如下: imagestring添加图片水印 <?php header("Content-Type: text/html;charset=utf-8"); //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image_type_to_extension($info[

  • jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】

    本文实例讲述了jQuery+css实现的点击图片放大缩小预览功能.分享给大家供大家参考,具体如下: 要求 点击一张图片,图片就会放大,查看大图,点击空白处就会隐藏大图,回到缩略图. 技术要点 主要是Jquery进行元素的显示与隐藏. 代码 <!DOCTYPE html> <html> <head> <title>qqq</title> <meta charset="utf-8"> <style type=&q

  • C#实现字符串与图片的Base64编码转换操作示例

    本文实例讲述了C#实现字符串与图片的Base64编码转换操作.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing

  • Python对接PicGo实现图片自动加水印并上传操作示例

    目录 1. 天下苦搬运党久矣 2. 目前的图床管理工具 3. 方案的设想 4. 代码完整解析 4.1 定义热键并监听键盘 第一步:先定义好你的热键 第二步:监听所有的键盘动作 4.2 从内存中读取图像 4.3 添加水印生成新图像 4.4 将新图像重新放入剪切板 4.5 模拟触发 PicGo 4.6 通知 Mac 通知台 5. 其他设置工作 5.1 设置程序权限 5.2 设置开机自启 6. 运行效果 7. 写在最后 1. 天下苦搬运党久矣 对于我这样经常需要写点文章的技术自媒体来说,很经常早上我才

  • iOS实现点击图片放大和长按保存图片的示例

    一:简介 在项目中免不了会遇到,实名认证上传身份证.绑定银行卡等功能.在实际操作中呢,会涉及到上传图片,在页面布局时,可能图片不是一张,考虑到布局的美观等因素,显示图片的位置变得很小,如果想查看上传的图片是否清晰,内容是否完整,可能就需要放大才能实现,下面就和大家分享一下我封装的一类,完美的实现了图片的缩放功能. 另外,这些博文都是来源于我日常开发中的技术总结,在时间允许的情况下,我会针对技术点分别分享iOS.Android两个版本,尽量附上demo以供大家参考,如果有其他技术点需要,可在文章后

  • Python opencv应用实现图片切分操作示例

    目录 说明 操作说明 代码 切换效果 说明 之前下载来zip包的漫画,里面的图片都是两张一起的: 但是某些漫画查看软件不支持自动分屏,看起来会比较不舒服,所以只能自己动手来切分. 操作说明 Python有不少的库支持图片操作,其中比较著名的一个是OpenCV. OpenCV是一个跨平台的计算机视觉库,Python下有它的接口实现. Python默认不带OpenCV,所以需要先用pip下载: OpenCV功能强大,这里用来做图片的切分其实是牛刀小试. 关于OpenCV的功能,这里不多介绍,有兴趣的

  • Vue后台实现点击图片放大功能的示例代码

    目录 需求 代码 父组件 子组件 dom.js util.js types.js 需求 点击小图可以放大,放大后,通过手势等比例放大缩小.左右切换图.旋转.关闭.由于element-ui版本较低不支持使用图片放大的image组件. 代码 父组件 <template> <div> <!-- 放大图 --> <el-image-viewer v-if="showImg" :on-close="closeViewer" :src=

  • Python Flask实现图片上传与下载的示例详解

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html 介绍 5.1 upload Jinja 模板介绍 5.2 upload css 介绍(虚线框) 5.3 upload js 介绍(拖拽) 1.效果预览 我们基于 Flask 官方指导工程,增加一个图片拖拽上传功能,效果如下: 2.新增逻辑概览 我们在官方指导工程上进行增加代码,改动如下: 由于 fl

随机推荐