php将两张身份证图片合并到一张图
/**
* @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将两张身份证图片合并到一张图的更多相关文章
- gulp-css-spriter 将css代码中的切片图片合并成雪碧图
NPM地址:https://www.npmjs.com/package/gulp-css-spriter/ 配置gulpfile.js: var gulp = require('gulp'), ...
- 读取多张MNIST图片与利用BaseEstimator基类创建分类器
读取多张MNIST图片 在读取多张MNIST图片之前,我们先来看下读取单张图片如何实现 每张数字图片大小都为28 * 28的,需要将数据reshape成28 * 28的,采用最近邻插值,如下 def ...
- 图片合并成PDF,两个PDF的合并
需求: 将多张手机照片合并成一个PDF,并于另一个成型PDF合并 过程: 使用全能扫描王处理一遍,拆剪掉多余部分,并提高亮度增加文字对比度 合并: 使用Faststone Capture合并图片即可. ...
- 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有
好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...
- Atitit 判断判断一张图片是否包含另一张小图片
Atitit 判断判断一张图片是否包含另一张小图片 1. keyword1 2. 模板匹配是在图像中寻找目标的方法之一(切割+图像相似度计算)1 3. 匹配效果2 4. 图片相似度的算法(感知哈希算 ...
- [工具] GIF 动画每帧合并到一张 PNG
功能:将 GIF 动画每帧合并到一张 PNG 需求:配合 ImageMagick 图像处理软件. 下载:[工具]Gif2Png_Aone_1.0.0.zip 使用方法: 请到 ImageMagick ...
- java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
1.多张jpg图合成gif动画 /** * 把多张jpg图片合成一张 * @param pic String[] 多个jpg文件名 包含路径 * @param newPic String 生成的gif ...
- js将用户上传gif动图分解成多张帧图片
js将用户上传gif动图分解成多张帧图片 写在前面 工作中遇到一个这么一个需求:这是一个多图上传的场景,如果用户上传选择多张图片,则上传后直接展示多张图片,如果上传的图片是gif动图,则需要分解这张动 ...
- .net core微信群图片合并
引用:SixLabors.ImageSharp,SixLabors.ImageSharp.Drawing,System.Drawing.Common /// <summary> /// 群 ...
随机推荐
- [C++]linux下实现rm()函数删除文件或目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600866.html 在linux下有两个函数可以用来删除文件: #include <unistd.h ...
- c语言数字图像处理(四):灰度变换
灰度变换 灰度变换函数 s = T(r) 其中r为输入图像在(x, y)点处的灰度值,s为输出图像在(x, y)点处的灰度值 灰度变换的作用 上图所示的两幅T(s)函数的图像曲线,第一幅图可以增强 ...
- 获取本地ip和获取公网ip
import socket def get_local_ip(): ''' 获取本地ip地址 :return: ''' s = socket.socket(socket.AF_INET, socket ...
- 0.3 CMD常用命令!以及用CMD显得自己高大上
CMD是大家熟知的Windows命令提示符(cmd.exe),它是 Windows NT 下的一个用于运行 Windows 控制面板程序或某些 DOS 程序的shell程序. CMD命令快捷键是:wi ...
- Datawhale MySQL 训练营 Task6 实战项目
作业 项目十:行程和用户(难度:困难) Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.St ...
- git ssh密钥配置添加
1. 初次安装git配置用户名和邮箱 $ git config --global user.name "xxx" $ git config --global user.email ...
- 最小费用最大流模板(POJ 2135-Farm Tour)
最近正好需要用到最小费用最大流,所以网上就找了这方面的代码,动手写了写,先在博客里存一下~ 代码的题目是POJ2135-Farm Tour 需要了解算法思想的,可以参考下面一篇文章,个人觉得有最大流基 ...
- Scrum Meeting 11.03
成员 今日任务 明日计划 用时 徐越 休息 赵庶宏 编写功能说明书,servlet代码移植 servlet代码移植 3h 薄霖 阅读上一届相关代码,思考改进方法 学习安卓界面设计数据库管理 4 ...
- 校友聊NABCD需求分析
校友聊 NABCD需求分析 N:内网用户流量不够使用 A:基于局域网进行通讯 B:通讯不花费外网流量 C:目前学校还没有使用 D:将软件放在校园网,可以下载使用
- 我的寒假C(C++)学习计划
前言 要补缺加强C语言的想法由来已久,上学期因为种种原因,某些知识点学习得不是很理想,而且,许多地方也有加强的必要,所以这次布置的随笔可谓是来得恰到好处. 学习材料 C Primer Plus 师爷的 ...