php实现的证件照换底色功能示例【人像抠图/换背景图】


Posted in PHP onMay 29, 2020

本文实例讲述了php实现的证件照换底色功能。分享给大家供大家参考,具体如下:

<?php
//背景图和原图需要保持宽高要保持一样,这里的示例原图用的是蓝色背景
init();
function init(){
  $old = '1.png';
  $new = '2.png';
  //创建一个png透明图
  $img = imagecreatefrompng($old);
  setpng($img,$old,$new);
}
function setpng($imgid,$filename,$savename){
  $bg = 'bg.png';//背景图
  $new = imagecreatefrompng($bg);//创建一个png透明图
  list($width,$height)=getimagesize($filename);//获取长和宽
  $white = imagecolorallocate($imgid,1,155,215);//选择一个替换颜色。这里是绿色
  cleancolor($imgid,$white);
  imagecolortransparent($imgid,$white);//把选择的颜色替换成透明
  imagecopymerge($new,$imgid,0,0,0,0,$width,$height,100);//合并图片
  imagepng($new,$savename);//保存图片
  imagedestroy($imgid);//销毁
  imagedestroy($new);
  echo '<img src="'.$savename.'">';
}
function cleancolor($imgid,$color){
  $width = imagesx($imgid);//获取宽
  $height = imagesy($imgid);//获取高
  for($i=0;$i<$width;$i++){
    for($k=0;$k<$height;$k++){
      //对比每一个像素
      $rgb = imagecolorat($imgid,$i,$k);
      $r = ($rgb >> 16)&0xff;//取R
      $g = ($rgb >> 8)&0xff;//取G
      $b = $rgb&0xff;//取B
      $randr = 1.5;
      $randg = 1;
      $randb=1;
      //蓝色RGB大致的位置。替换成绿色
      if($r<=65*$randr && $g<=225*$randg && $b<=255*$randb && $b*$randb>=100){
        //如果能够精确的计算出要保留位置的,这里可以写绝对的数字
        if($i>=$width/2 && $i<=$width/2 && $k>=$height/2 && $k<=$height/2){
          
        }else{
          //改变颜色
          imagesetpixel($imgid,$i,$k,$color);
        }
      }
    }
  }
}
  • $old指的是要处理的图片,指定为png格式
  • $new指的是处理后输出的图片名
  • $bg指的是背景图

php实现的证件照换底色功能示例【人像抠图/换背景图】

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP输出控制功能在简繁体转换中的应用
Oct 09 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php xml 入门学习资料
Jan 01 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 PHP
php生成短网址/短链接原理和用法实例分析
May 29 #PHP
PHP const定义常量及global定义全局常量实例解析
May 28 #PHP
PHP实现获取文件mime类型多种方法解析
May 28 #PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 #PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 #PHP
php与阿里云短信接口接入操作案例分析
May 27 #PHP
PHP开发API接口签名生成及验证操作示例
May 27 #PHP
You might like
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python对html代码进行escape编码的方法
2015/05/04 Python
python绘图方法实例入门
2015/05/19 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
python实现朴素贝叶斯算法
2018/11/19 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
利用python开发app实战的方法
2019/07/09 Python
python线程信号量semaphore使用解析
2019/11/30 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
法人代表证明书范本
2015/06/18 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
vue3获取当前路由地址
2022/02/18 Vue.js