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开发工具之vs2005图解
Jan 12 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
小文件php+SQLite存储方案
Sep 04 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
php实现插入排序
Mar 29 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php中namespace use用法实例分析
2016/01/22 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
道路交通安全实施方案
2014/03/12 职场文书
倡议书范文
2014/04/16 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
小学毕业感言100字
2015/07/30 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
Javascript 解构赋值详情
2021/11/17 Javascript