需求:最近在做一个原生的php项目,要通过用户上传的图片和信息,生成一个对应的证件,就想到了使用GD库,但是现在的是自己不太会,所以靠百度,找到了一个大佬写的代码,然后封装了一下,实现了此效果,留下记录,以后可以直接拿来使用,
php代码
<?phpclass ImageHandle
{private $tmpdir = ".";# 文件目录必须的是绝对路径,但是后来没用上 我就先保留了private $font = array("family" => "E:/phpstudy_pro/WWW/php7/simkai.ttf", "color" => array(255, 0, 0), "size" => 22 );private $color = [255,0,255];private $size = 18;# 生成目录public function SetTmpDir($tmpdir = "."){$this->tmpdir = $tmpdir;}# 设置文字public function SetFont($font){foreach ($this->font as $key => $value) {if(array_key_exists($key, $font)){$this->font[$key] = $font[$key];}}}# 生成文件的内容大小public function ImageToWidthHeight($image, $width, $height){$imageinfo = getimagesize($image); //  获取图像大小$former = null;switch (end($imageinfo)) { // 执行最后的一个单元 来判断当前的后缀名是什么case 'image/jpeg':$former = imagecreatefromjpeg($image); // 生成一个jpg的图片break;case 'image/png':$former = imagecreatefrompng($image); // 生成一个png的图片break;default: break;}if($former){$new = imagecreatetruecolor($width, $height); // 创建一个画布资源imagecopyresampled($new, $former, 0, 0, 0, 0, $width, $height, imagesx($former), imagesy($former));$tpath = $this->tmpdir.DIRECTORY_SEPARATOR.md5(time()."".mt_rand()).image_type_to_extension(IMAGETYPE_JPEG);imagejpeg($new, $tpath, 100); // 生成一个图片文件,imagedestroy($new); // 关闭刚刚创建处理的画布资源imagedestroy($former);return $tpath;}return "";}# 合并图像public function MergeTwoJpegImage($image1, $image2, $x, $y){$base = imagecreatefromjpeg($image1); // 创建一个画布jpeg资源$go = imagecreatefromjpeg($image2);// 创建一个画布jpeg资源$gox = imagesx($go);$goy = imagesy($go);# 合并图像imagecopymerge($base, $go, $x, $y, 0, 0, $gox, $goy, 100);$tpath = $this->tmpdir.DIRECTORY_SEPARATOR.md5(time()."".mt_rand()).image_type_to_extension(IMAGETYPE_JPEG);imagejpeg($base, $tpath, 100);imagedestroy($base);imagedestroy($go);return $tpath;}# 生成最后定准的图片public function ImageAddText($image, $text, $x = 0, $y = 0, $textAlign = 0){$base = imagecreatefromjpeg($image);$color = imagecolorallocate($base, $this->color[0], $this->color[1], $this->color[2]);if($textAlign == 2){// 右对齐 $x 为距离$image 的右侧距离# 可以使用这种方法,但是我这里是由于 需要排版所以是 每个文字都要单独调整$fontbox = imageftbbox($this->font['size'], 0, $this->font['family'], $text);imagettftext($base, $this->font['size'], 0, ceil(imagesx($base) - $x - $fontbox[2]), $y, $color, $this->font['family'], $text);}else if($textAlign == 1){# 整合信息 根据坐标 进行排版imagestring($base, 5, 0, 0, "Hello world!", $color);imagestring($base, 5, 100, 250, "Hello Testt!", $color);}else{// 左对齐imagettftext($base, $this->font['size'], 0, $x, $y, $color, $this->font['family'], $text);}$tpath = $this->tmpdir.DIRECTORY_SEPARATOR.md5(time()."".mt_rand()).image_type_to_extension(IMAGETYPE_JPEG);imagejpeg($base, $tpath, 100);imagedestroy($base);return $tpath;}
}# 封装函数调调用这个方法,其实可以写到方法里,在整合到php原生项目中,我是这么处理的。
function heChengHaiBao($beijing, $touxiang, $nicheng){$ih = new ImageHandle();$ih->SetTmpDir("./im"); //图片生成目录$ih->SetFont(array("color"=>array(255,255,255),"size"=>20));$bj = $ih->ImageToWidthHeight($beijing, 500, 300); // 生成文件并删除当前的文件,为最后的合并做准备$tx = $ih->ImageToWidthHeight($touxiang, 200, 200);// 生成文件并删除当前的文件,为最后的合并做准备$tmp1 = $ih->MergeTwoJpegImage($bj, $tx, 30, 30); // x y 表示距离图层的的坐标中$tmp5 = $ih->ImageAddText($tmp1, $nicheng, 0, 150, 1); #这个方法 是将文字写入到图层中。# 删除合并的 无用图片@unlink($bj);@unlink($tx);@unlink($tmp1);return $tmp5;
}# 调用这个方法,在当前目录即可,$font是传递的文字,当前再试 使用死的方式,到时候 可以直接传递
heChengHaiBao("./test.jpg", "./one.jpg", $font);?>
需要实时学习,切不可妄自骄傲自满,昨天遇见的需求,然后明白了一个道理,其实代码不是很难写的,主要是你要首先知道你的逻辑是同的,你想要的实现的是什么东西,想起我们老板给我说过一段话, 写代码,首先要先写伪代码, 这步是要做什么,下一步是要做什么,这一步是为了下一步要做成什么。刚开始的时候还是有点不太理解,或者有点自大。但是现在发现,经验不是白长的,更何况你先在还只是刚回爬的小孩子儿,好好学习,现在这个状态还是比较满足的,凡事能让自己上瘾的,首先就直接干到他,比如游戏,直接卸载,比如看得小说,直接卸载,昨天看小说看到了3点,有个终结的地方,直接不看了,当时就把小说软件给卸载了。单由于昨天的熬夜,今天办公就不是很有精神。

原生php实现,图层合并,通过文字生成图片,相关推荐

  1. PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)

    PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001  至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...

  2. android 文字转化为图片格式,Android 文字生成图片

    一直在看别人写的文章,而自己却不敢执笔来写,一是怕写得不好,二是平时也不太有写文章的习惯,所以总感觉看别人写就好啦,但是最近工作遇到点问题,本以为很简单的,但是奈何解决起来还是比较麻烦的 把Andro ...

  3. C# AutoCAD ActiveX 二次开发 -- CAD图层合并

    因使用AutoCAD版本为2004,2006版本以后才有.net开发包,因此采用ActiveX方式进行开发. 功能为:将几个CAD图层合并到其中一个上,并设置坐标,线和标记的颜色和字体. CAD对象的 ...

  4. 想学文字生成图片?3招告诉你描述文字生成图片怎么做

    平日里爱刷短视频的小伙伴们肯定发现了最近AI绘画很热门吧,那么你是不是非常好奇他们是怎么通过描述文字就生成精美的图片的呢?其实他们是借助了一些软件才实现"文生图"的哦.那此时你是不 ...

  5. 文字生成图片的软件有哪些?这篇文章给你介绍三个

    随着科技的发展,AI生成图片在艺术创作和创意设计领域也得到了广泛应用.艺术家和设计师可以利用AI生成的图像作为灵感和创意的来源,或者将其作为原始素材进行后续的修改和编辑.AI生成图片可以帮助探索新的艺 ...

  6. java操作图片集合(添加图片水印、文字水印,文字生成图片,图片转pdf等)

    花不多说 ,上代码 简单文字水印 // path 为原图片地址, outPath则是输出新图片地址public static void addWatermark(String path, String ...

  7. html5将文字生成图片

    由于canvas能够将画布上的纹理生成数据给img显示出来,所以,我们在html5里面可以实现将文字生成图片显示. 首先我书写了一个将文字绘制到canvas上面的函数,然后函数会返回canvas绘制的 ...

  8. 根据文字生成图片插件

    根据文字生成图片插件 根据文字生成图片插件,我之前在csdn上有公开分享过一次源码以及开发流程(本站也有相关文章),有一定开发基础的可以看这里.使用php,根据输入的文字自动生成图片,并把文字在图片上 ...

  9. 谁能告诉我文字生成图片在线制作要如何做?

    今天我要给大家介绍一个新颖的概念:文字生图片,也称为基于文本的图像生成,它是一种利用人工智能技术将自然语言描述转化成图像或照片的方法.接下来让我们一起了解文字生图片制作是怎样的吧! 它的技术原理非常复 ...

  10. 怎么将文字生成图片?试试这几个方法制作图片

    如果你有做过宣传工作,你就会明白一张好看的海报吸引力会有多大,当我们需要制作一份宣传材料来吸引更多的潜在客户,但本人没有设计经验的时候,我们就可以借助AI文字生成图片软件来创建一个漂亮的宣传海报,然后 ...

最新文章

  1. luogu P3410 拍照(最大权闭合图转最小割)
  2. 任正非最新讲话:华为专家队伍怎么建?
  3. 将Iterable转换为Collection的简便方法
  4. 企业搜索引擎开发之连接器connector(二十九)
  5. win7 VS2013 新建工程 编译lua5.2.0 静态库
  6. 基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-数据库设计
  7. Pricing in SAP CRM and Cloud for Customer
  8. LeetCode 1248. 统计「优美子数组」(要复习)
  9. 13.mtk lcm gamma调试
  10. html动画人物走路,动画人物走路教程
  11. [MSSQL] 数据库置疑怎么处理?
  12. 通达信交易服务器修改,GitHub - sjj6love/TdxTradeServer: TongDaXin Tarde Server 通达信交易服务器...
  13. python Requests+正则表达式爬取猫眼电影top100
  14. d3中为每个rect元素绑定带数据的点击事件
  15. 深度学习核心技术精讲100篇(四十五)-商业DMP数据管理平台的架构与实践
  16. openCV—converTo()用法
  17. 计算机2级都有哪些,计算机二级考试内容有哪些
  18. 为什么 MySQL 不建议执行超过 3 表以上的多表关联查询?
  19. Life feelings--8--愉悦的做技术--将实验当做一种快乐
  20. shell十三问--shell教程

热门文章

  1. 马云:预测2014——可怕
  2. CNN卷积神经网络的卷积层、池化层的输出维度计算公式
  3. 基于电商产品评论数据情感分析
  4. 提示BuildTargetGroup.WebPlayer已过时报错的修改方法
  5. 第七章 从POP3服务器提取电子邮件
  6. JSP如何获取HTML form中的数据
  7. DVWA漏洞平台学习之Medium级别
  8. 定积分及其应用知识点总结_导数及其应用 知识点总结
  9. 快速定位到百度搜索框
  10. 請叫我程序小廚娘 小吉狂想曲