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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
php magic_quotes_gpc的一点认识与分析
Aug 18 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
php实现rc4加密算法代码
Apr 25 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
php二分查找二种实现示例
Mar 12 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
php变量与字符串的增删改查操作示例
May 07 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
Node.js Buffer用法解读
2018/05/18 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python实现将内容分行输出
2015/11/05 Python
详谈python http长连接客户端
2017/06/12 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python验证码识别实例代码
2018/02/03 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Django之腾讯云短信的实现
2020/06/12 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
庆七一活动方案
2014/01/25 职场文书
公司运动会策划方案
2014/05/25 职场文书
节约用水的口号
2014/06/20 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
小学生通知书评语
2014/12/31 职场文书
保留意见审计报告
2015/06/05 职场文书
执行力心得体会范文
2016/01/11 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python