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 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
php过滤XSS攻击的函数
Nov 12 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
php实现根据身份证获取精准年龄
Feb 26 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
用php解析html的实现代码
2011/08/08 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PDO::quote讲解
2019/01/29 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
pywinauto自动化操作记事本
2019/08/26 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
社区端午节活动总结
2015/02/11 职场文书
员工自我工作评价
2015/03/06 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript