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中如何将数组变量写入文件
Jun 06 PHP
php后门URL的防范
Nov 12 PHP
php的一个简单加密解密代码
Jan 14 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
CI框架整合smarty步骤详解
May 19 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 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中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
2017/02/23 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
2014年会演讲稿范文
2014/01/06 职场文书
先进党支部事迹材料
2014/01/13 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
工商管理专业自荐信
2014/06/03 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
文明社区申报材料
2014/08/21 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
《正比例》教学反思
2016/02/23 职场文书
高三英语教学反思
2016/03/03 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
nginx.conf配置文件结构小结
2022/04/08 Servers