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 相关文章推荐
一个程序下载的管理程序(二)
Oct 09 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
php array_search() 函数使用
Apr 13 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
基于php iconv函数的使用详解
Jun 09 PHP
Zend studio文件注释模板设置方法
Sep 29 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
php实现倒计时效果
Dec 19 PHP
php smtp实现发送邮件功能
Jun 22 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
jQuery读取XML文件内容的方法
2015/03/09 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
ReactRouter的实现方法
2021/01/25 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
Python输出各行命令详解
2018/02/01 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Python列表的索引与切片
2022/04/07 Python
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技