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之第一天
Oct 09 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
优化PHP程序的方法小结
Feb 23 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
PHP实现仿Google分页效果的分页函数
Jul 29 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
浅谈PHP7中的一些小技巧
May 29 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
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
js中if语句的几种优化代码写法
2011/03/12 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
深入了解js原型模式
2019/05/30 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
详解python中eval函数的作用
2019/10/22 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
iostream与iostream.h的区别
2015/01/16 面试题
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
爱护公物标语
2014/06/24 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
个人事迹材料范文
2014/12/29 职场文书
防暑降温通知书
2015/04/27 职场文书
民事辩护词范文
2015/05/21 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers