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 CLI实现简单的数据库实时监控调度
Jul 01 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
php随机显示图片的简单示例
Feb 15 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 PHP
Yii2框架中一些折磨人的坑
Dec 15 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 三维饼图的实现代码
2008/09/28 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
Javascript的闭包详解
2014/12/26 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
替换python字典中的key值方法
2018/07/06 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
Python同步遍历多个列表的示例
2019/02/19 Python
详解Python time库的使用
2019/10/10 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python从Oracle读取数据生成图表
2020/10/14 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
大学生毕业的自我鉴定
2013/11/13 职场文书
员工培训协议书
2014/09/15 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
病危通知单
2015/04/17 职场文书
56句经典英文座右铭
2019/08/09 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL