标题: [其他] 优化版批处理据图片尺寸大小计算幅面/纸张大小并统计相应数量 [打印本页]
作者: nx5888 时间: 2023-11-13 19:31 标题: 优化版批处理据图片尺寸大小计算幅面/纸张大小并统计相应数量
做档案数字化使用了<001011>大神写的图片幅面统计脚本,因幅面统计算法不能满足行业需求,遂进行了如下优化:
问题:非标准尺寸的大规格纸张统计错误,有些纸张看似A3实际又没完全达到A3的尺寸软件就按A4统计的
需求:超过当前标准规格尺寸80%就按大一个规格统计- @set @n=0/* & echo off
- cd /d G:\test\
- dir /a-d /b /s *.tif *.jpg *.png *.jpeg | cscript -nologo -e:jscript "%~f0"
- pause & exit /b */
-
- var arr = [0, 0, 0, 0, 0, 0];
- var ssh = new ActiveXObject('Shell.Application');
- var fd = ssh.NameSpace(0x00);
-
- var checkSize = function(width, height){
- if(width>=129 || height>=129){
- arr[0] += 1;
- return 'A0+'
- }else if((width>=95.12 && width<129) || (height>=95.12 && height<129)){
- arr[1] += 1;
- return 'A0'
- }else if((width>=67.28 && width<95.12) || (height>=67.28 && height<95.12)){
- arr[2] += 1;
- return 'A1'
- }else if((width>=47.52 && width<67.28) || (height>=47.52 && height<67.28)){
- arr[3] += 1;
- return 'A2'
- }else if((width>=33.6 && width<47.52) || (height>=33.6 && height<47.52)){
- arr[4] += 1;
- return 'A3'
- }else {
- arr[5] += 1;
- return 'A4'
- }
- }
-
- for(var i=0; i<300; i++) {
- if(fd.GetDetailsOf(null, i) == '宽度') {
- var n1 = i;
- }else if(fd.GetDetailsOf(null, i) == '高度') {
- var n2 = i;
- }else if(/^水平分[辨辩]率$/.test(fd.GetDetailsOf(null, i))) {
- var n3 = i;
- }else if(/^垂直分[辨辩]率$/.test(fd.GetDetailsOf(null, i))) {
- var n4 = i;
- }
- }
-
- while(!WSH.StdIn.AtEndOfStream){
- var file = WSH.StdIn.ReadLine();
- var name = file.replace(/.+\\(.+)$/, '$1');
- var fd = ssh.NameSpace( file.replace(/(.+)\\.+$/, '$1') );
- var w = fd.GetDetailsOf(fd.ParseName(name), n1).match(/\d+/)[0]; //宽度
- var h = fd.GetDetailsOf(fd.ParseName(name), n2).match(/\d+/)[0]; //高度
- var hr = fd.GetDetailsOf(fd.ParseName(name), n3).match(/\d+/)[0]; //水平刷新率
- var vr = fd.GetDetailsOf(fd.ParseName(name), n4).match(/\d+/)[0]; //垂直刷新率
- var width = (w / hr * 2.54).toFixed(1); height = (h / vr * 2.54).toFixed(1);
- var size = checkSize(width, height);
- WSH.Echo(name + ' ' + width + 'x' + height + ' ' + size);
- }
-
- var s = 'A0+共' + arr[0] + '张,A0共' + arr[1] + '张,A1共' + arr[2] + '张,';
- s += 'A2共' + arr[3] + '张,A3共' + arr[4] + '张,A4共' + arr[5] + '张\r\n';
- s += '折合A4共' + (arr[0]*32+arr[1]*16+arr[2]*8+arr[3]*4+arr[4]*2+arr[5]) + '张'
-
- WSH.Echo(s)
复制代码
作者: buyiyang 时间: 2023-11-13 22:09
第十行后加上复制代码
作者: Five66 时间: 2023-11-13 23:33
尺寸大小不能一概而论,一切以实际为准
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |