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中集成PayPal标准支付的实现方法分享
Feb 06 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 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 处理图片的类实现代码
2009/10/23 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php构造函数实例讲解
2013/11/13 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
Python的条件语句与运算符优先级详解
2015/10/13 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
XML文档面试题
2015/08/05 面试题
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
大二自我鉴定范文
2013/10/05 职场文书
中专毕业生自荐信
2013/11/16 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
PHP中多字节字符串操作实例详解
2021/08/23 PHP
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL