Board logo

标题: [其他] 优化版批处理据图片尺寸大小计算幅面/纸张大小并统计相应数量 [打印本页]

作者: nx5888    时间: 2023-11-13 19:31     标题: 优化版批处理据图片尺寸大小计算幅面/纸张大小并统计相应数量

做档案数字化使用了<001011>大神写的图片幅面统计脚本,因幅面统计算法不能满足行业需求,遂进行了如下优化:
问题:非标准尺寸的大规格纸张统计错误,有些纸张看似A3实际又没完全达到A3的尺寸软件就按A4统计的
需求:超过当前标准规格尺寸80%就按大一个规格统计
  1. @set @n=0/* & echo off
  2. cd /d G:\test\
  3. dir /a-d /b /s *.tif *.jpg *.png *.jpeg | cscript -nologo -e:jscript "%~f0"
  4. pause & exit /b */
  5. var arr = [0, 0, 0, 0, 0, 0];
  6. var ssh = new ActiveXObject('Shell.Application');
  7. var fd  = ssh.NameSpace(0x00);
  8. var checkSize = function(width, height){
  9.         if(width>=129 || height>=129){
  10.                 arr[0] += 1;
  11.                 return 'A0+'
  12.         }else if((width>=95.12 && width<129) || (height>=95.12 && height<129)){
  13.                 arr[1] += 1;
  14.                 return 'A0'
  15.         }else if((width>=67.28 && width<95.12) || (height>=67.28 && height<95.12)){
  16.                 arr[2] += 1;
  17.                 return 'A1'
  18.         }else if((width>=47.52 && width<67.28) || (height>=47.52 && height<67.28)){
  19.                 arr[3] += 1;
  20.                 return 'A2'
  21.         }else if((width>=33.6 && width<47.52) || (height>=33.6 && height<47.52)){
  22.                 arr[4] += 1;
  23.                 return 'A3'
  24.         }else {
  25.                 arr[5] += 1;
  26.                 return 'A4'
  27.         }
  28. }
  29. for(var i=0; i<300; i++) {   
  30.         if(fd.GetDetailsOf(null, i) == '宽度') {
  31.                 var n1 = i;
  32.         }else if(fd.GetDetailsOf(null, i) == '高度') {
  33.                 var n2 = i;
  34.         }else if(/^水平分[辨辩]率$/.test(fd.GetDetailsOf(null, i))) {
  35.                 var n3 = i;
  36.         }else if(/^垂直分[辨辩]率$/.test(fd.GetDetailsOf(null, i))) {
  37.                 var n4 = i;
  38.         }
  39. }
  40. while(!WSH.StdIn.AtEndOfStream){
  41.         var file = WSH.StdIn.ReadLine();
  42.         var name = file.replace(/.+\\(.+)$/, '$1');
  43.         var fd = ssh.NameSpace( file.replace(/(.+)\\.+$/, '$1') );
  44.         var w = fd.GetDetailsOf(fd.ParseName(name), n1).match(/\d+/)[0];  //宽度
  45.         var h = fd.GetDetailsOf(fd.ParseName(name), n2).match(/\d+/)[0];  //高度
  46.         var hr = fd.GetDetailsOf(fd.ParseName(name), n3).match(/\d+/)[0]; //水平刷新率
  47.         var vr = fd.GetDetailsOf(fd.ParseName(name), n4).match(/\d+/)[0]; //垂直刷新率
  48.         var width = (w / hr * 2.54).toFixed(1); height = (h / vr * 2.54).toFixed(1);
  49.         var size = checkSize(width, height);
  50.         WSH.Echo(name + ' ' + width + 'x' + height + ' ' + size);
  51. }
  52. var s = 'A0+共' + arr[0] + '张,A0共' + arr[1] + '张,A1共' + arr[2] + '张,';
  53. s += 'A2共' + arr[3] + '张,A3共' + arr[4] + '张,A4共' + arr[5] + '张\r\n';
  54. s += '折合A4共' + (arr[0]*32+arr[1]*16+arr[2]*8+arr[3]*4+arr[4]*2+arr[5]) + '张'
  55. WSH.Echo(s)
复制代码

作者: buyiyang    时间: 2023-11-13 22:09

第十行后加上
  1. width/=0.8;height/=0.8;
复制代码

作者: Five66    时间: 2023-11-13 23:33

尺寸大小不能一概而论,一切以实际为准




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2