9月份全国计算机等级考试,现在需要先上报考生报名数据到省考试院和教育部的考务管理系统。
但是现在的问题是:需要上传到教育部考务管理系统的是一份excel名单,里面有个照片文件名的字段,要求照片文件的命名规则是“考次+考点代码+报名流水号”,而且照片本身需要将大小设置为144*192,大小不超过20K。
但是下面县市报过来的照片有1700多张全部是以身份证号码命名的,有200多张是按照“考次+考点代码+考试科目代码+报名流水号”规则命名的,还有部分照片县市还未报送过来。而且照片的大小不一,普遍超过20K,大部分都200K左右。
现在需要将报名数据处理成符合教育部的规范。
如果要手工更改近2000张照片的命名并且设置其大小那无疑要做到手抽筋,今天写个脚本解决了这个问题:
/**
* Created by PhpStorm.
* User: Le
* Date: 2015/7/19
* Time: 19:12
*/
header('Content-Type: text/html; charset=utf-8');
include './Classes/PHPExcel/IOFactory.php';//加载PHPExcel
include './Image.class.php';//加载一个图像处理的类
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setLoadSheetsOnly('考生登记信息');//加载sheet为"考生登记信息"的那张表
$objPHPExcel = $objReader->load('data.xls');
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$j=0;
$k=0;
//共2043个考生报名
for($i=2;$i<2045;$i++){
//判断是否存在图片
if(file_exists('./zp/dcl/'.$sheetData[$i]['H'].'.jpg')||file_exists('./zp/dcl/43360014'.$sheetData[$i]['M'].$sheetData[$i]['B'].'.jpg')){
if(file_exists('./zp/dcl/'.$sheetData[$i]['H'].'.jpg')){
rename('./zp/dcl/'.$sheetData[$i]['H'].'.jpg', './zp/sb/43360014'.$sheetData[$i]['B'].'.jpg');//将以身份证号码命名的照片重命名
}else{
rename('./zp/dcl/43360014'.$sheetData[$i]['M'].$sheetData[$i]['B'].'.jpg', './zp/sb/43360014'.$sheetData[$i]['B'].'.jpg');//将按照“考次+考点代码+考试科目代码+报名流水号”的照片重命名
}
$imgName = '43360014'.$sheetData[$i]['B'].'.jpg';
$image=new Image('./zp/sb/');
$imageName=$image->thumb($imgName, '144', '192',"");//处理图片,将其设置为144*192
echo '第'.$k.'张照片处理完毕!<br />';
$k++;
}else{
echo $sheetData[$i]['H'].'的照片不存在!<br />';
$j++;
}
}
echo $j.'张照片不存在!<br />';
1900多张照片在处理以前大小为460M,命名规则不统一且均不符合上级的规范。经过脚本处理后,全部重命名成了符合规范的名称,而且全部的照片大小变成了12M。