/**
* @desc 合并身份证的正反面到同一张图片
* @author Jimmy
* @date 2016-12-33
* @param $imageSrc0 身份证正面
* @param $imageSrc1 身份证反面
* @param $desPath 合并后图片地址
* @return mixed
*/
public static function mergeImage($imageSrc0, $imageSrc1, $dirPath){
!file_exists($dirPath)&&mkdir($dirPath);
$imagePath0=self::rotateImage($imageSrc0,$dirPath);
$imagePath1=self::rotateImage($imageSrc1,$dirPath);
$size0=getimagesize($imagePath0);
$size1=getimagesize($imagePath1);
$image0_width=$size0[0];
$image0_height=$size0[1];
$image1_width=$size1[0];
$image1_height=$size1[1];
if($image0_width>$image1_width){
$canvas_width=$image0_width;
}else{
$canvas_width=$image1_width;
}
$canvas_height=$image0_height+$image1_height;
$im0=imagecreatefromjpeg($imagePath0);
$im1=imagecreatefromjpeg($imagePath1);
$canvas=imagecreatetruecolor($canvas_width,$canvas_height);
imagefill($canvas,0,0,imagecolorallocate($canvas,255,255,255));
$img0_x=($canvas_width-$image0_width)/2;
$img1_x=($canvas_width-$image1_width)/2;
imagecopyresampled($canvas,$im0,intval($img0_x),0,0,0,$image0_width,$image0_height, $image0_width,$image0_height);
imagecopyresampled($canvas,$im1,intval($img1_x),$image0_height,0,0,$image1_width,$image1_height, $image1_width,$image1_height);
$desPath = $dirPath. Uuid::createUuid().'.jpg';//这里只是使用写好的Uuid给图片取一个唯一的名字
file_exists($desPath)&&unlink($desPath);
imagejpeg($canvas,$desPath,100);
if($imagePath0!=$imageSrc0)file_exists($imagePath0)&&unlink($imagePath0);
if($imagePath1!=$imageSrc1)file_exists($imagePath1)&&unlink($imagePath1);
return $desPath;
} /**
* @desc 旋转长图片为宽图片
* @author Jimmy
* @date 2016-12-22
* @param $imagePath
* @return string
*/
public static function rotateImage($imagePath,$dirPath){
!file_exists($dirPath)&&mkdir($dirPath);
$size=getimagesize($imagePath);
if($size[0]<$size[1]){//图片需要旋转90度
$img=imagecreatefromjpeg($imagePath);
$rotate=imagerotate($img,90,0);
$desPath = dirname($dirPath). Uuid::createUuid().'.jpg';
imagejpeg($rotate,$desPath);
return $desPath;
}else{
return $imagePath;
}
}

注意:由于用户上传的身份证正反面有可能是横向的也有可能是竖向的,程序考虑了横图片(长度大于宽度)和竖图片(长度小于宽度)的不同情况,

遇到竖图片需要将之先旋转为横图片,这样才能让最后合成的图片都是横向的。

php将两张身份证图片合并到一张图的更多相关文章

  1. gulp-css-spriter 将css代码中的切片图片合并成雪碧图

    NPM地址:https://www.npmjs.com/package/gulp-css-spriter/ 配置gulpfile.js: var gulp = require('gulp'),     ...

  2. 读取多张MNIST图片与利用BaseEstimator基类创建分类器

    读取多张MNIST图片 在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现 每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下 def ...

  3. 图片合并成PDF,两个PDF的合并

    需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...

  4. 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有

    好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...

  5. Atitit 判断判断一张图片是否包含另一张小图片

    Atitit 判断判断一张图片是否包含另一张小图片 1. keyword1 2.  模板匹配是在图像中寻找目标的方法之一(切割+图像相似度计算)1 3. 匹配效果2 4. 图片相似度的算法(感知哈希算 ...

  6. [工具] GIF 动画每帧合并到一张 PNG

    功能:将 GIF 动画每帧合并到一张 PNG 需求:配合 ImageMagick 图像处理软件. 下载:[工具]Gif2Png_Aone_1.0.0.zip 使用方法: 请到 ImageMagick  ...

  7. java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片

    1.多张jpg图合成gif动画 /** * 把多张jpg图片合成一张 * @param pic String[] 多个jpg文件名 包含路径 * @param newPic String 生成的gif ...

  8. js将用户上传gif动图分解成多张帧图片

    js将用户上传gif动图分解成多张帧图片 写在前面 工作中遇到一个这么一个需求:这是一个多图上传的场景,如果用户上传选择多张图片,则上传后直接展示多张图片,如果上传的图片是gif动图,则需要分解这张动 ...

  9. .net core微信群图片合并

    引用:SixLabors.ImageSharp,SixLabors.ImageSharp.Drawing,System.Drawing.Common /// <summary> /// 群 ...

随机推荐

  1. Java non-javadoc

    Java注释 non-javadoc 表示该处没有自己的注释, @see javax.servlet.Servlet#init() 参考see后面的链接 /* * (non-javadoc) * @s ...

  2. Cocos2dx源码赏析(1)之启动流程与主循环

    Cocos2dx源码赏析(1)之启动流程与主循环 我们知道Cocos2dx是一款开源的跨平台游戏引擎,而学习开源项目一个较实用的办法就是读源码.所谓,"源码之前,了无秘密".而笔者 ...

  3. python2.7 倒计时

    From: http://www.vitostack.com/2016/06/05/python-clock/#more Python公告 Python 发布了一个网站 http://pythoncl ...

  4. iOS中使用RNCryptor对资源文件加密(先加密后拖进项目中)

    概述:IPA 在发布时,业务相关的敏感资源文件以明文的形式存储,由于没有加密保护,这些文件在应用发布后 可能被其他人获取,并结合其他漏洞和手段产生真实攻击.所以我们要 1.在设计.开发阶段,集合业务确 ...

  5. python2.6更改为Python2.7

    文中为Python2.6.6,改为Python2.6即可,因为没有/usr/bin/python2.6.6,只有/usr/bin/python2.6 http://blog.csdn.net/jcjc ...

  6. nginx模块学习

    rewrite模块的语法 链接

  7. Daily Scrum 11.14

    姓名 今日任务 黄新越 按照热度排序->产生柱状图 刘垚鹏 总体代码架构整合 王骜 总体代码架构整合 林旭鹏 优化整体UI布局 安康 优化整体UI布局 黄伟龙 预先合作编写测试用例 马佐霖 预先 ...

  8. Daily scrum 2015.10.19

    这周是我们团队项目开始的第一周.我们的团队项目是“北航社团平台”,一个致力于打造北航社团资讯整合.社团工作服务与社团商品销售的一站式网络平台. 一.会议内容 1. 总体分工,江昊同学担任项目PM,王若 ...

  9. 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结

    20172319 2018.04.11-16 <Java程序设计教程>第6周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...

  10. 【数据预处理】TIMIT语料库WAV文件转换

    1 问题描述 这两天复现代码.先构造数据集,纯净语音.不同噪声.不同SNR的混合语音.其中纯净语音由两部分组成,IEEE corpus和TIMIT. 一开始我用MATLAB中的audioread读取音 ...