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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
adodb与adodb_lite之比较
Dec 31 PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
PHP数组函数知识汇总
May 12 PHP
php实现微信和支付宝支付的示例代码
Aug 11 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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生成局部唯一识别码LUID的代码
2012/10/06 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP连接access数据库
2015/03/27 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python 序列的方法总结
2016/10/18 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
用python实现一个简单的验证码
2020/12/09 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
网络教育自我鉴定
2013/11/01 职场文书
校园公益广告语
2014/03/13 职场文书
安全施工责任书
2014/08/25 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
开业庆典致辞
2015/08/01 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
React配置子路由的实现
2021/06/03 Javascript