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 已经成熟
Dec 04 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
PHP制作用户注册系统
Oct 23 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
详解js异步文件加载器
Jan 24 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
PHP 断点续传实例详解
Nov 11 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 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逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
php中使用GD库做验证码
2016/03/31 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP中header用法小结
2016/05/23 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
vue实现购物车加减
2020/05/30 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
python Django模板的使用方法(图文)
2013/11/04 Python
Python函数中定义参数的四种方式
2014/11/30 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
python制作简单五子棋游戏
2019/06/18 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
物业门卫岗位职责
2013/12/28 职场文书
任命通知范文
2015/04/21 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
从事会计工作年限证明
2015/06/23 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
什么是Python装饰器?如何定义和使用?
2022/04/11 Python