标题: [文件操作] 批处理统计图片不同尺寸的数量 [打印本页]
作者: printwu 时间: 2019-4-14 13:47 标题: 批处理统计图片不同尺寸的数量
代码如下。遇到的问题是,我有一个图片,应该是A2尺寸,被判断为了A3,请问应该怎么修改?图片的详细信息如下。- @set @n=0/* & echo off
- cd /d E:\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>=118.9 && width<129) || (height>=118.9 && height<129)){
- arr[1] += 1;
- return 'A0'
- }else if((width>=84.1 && width<118.9) || (height>=84.1 && height<118.9)){
- arr[2] += 1;
- return 'A1'
- }else if((width>=59.4 && width<84.1) || (height>=59.4 && height<84.1)){
- arr[3] += 1;
- return 'A2'
- }else if((width>=42 && width<59.4) || (height>=42 && height<59.4)){
- 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)
复制代码
作者: printwu 时间: 2019-4-14 13:49
执行后读取到这张图片的数值如下
390.tif 58.6x44.0 A3
A0+共0张,A0共0张,A1共0张,A2共0张,A3共1张,A4共0张
折合A4共2张
作者: WHY 时间: 2019-4-14 14:35
你依据什么条件来判定它应该为 A2 的?
作者: printwu 时间: 2019-4-14 14:41
回复 3# WHY
您好,感谢您当年写的这个代码,非常实用。
我是用高 宽判断的。按说58.6x44.0 要算在a1里面了(44这边超出a2了。)
A2纸规格尺寸:
420mm×594mm
A3纸规格尺寸:
297mm×420mm
作者: zaqmlp 时间: 2019-4-14 15:06
回复 2# printwu
if((width>=42 && width<59.4) || (height>=42 && height<59.4)){
arr[4] += 1;
return 'A3'
}
你的条件这样写的,不就是A3吗?还是说你其实不知道这是啥意思?尽管应该用&&
作者: printwu 时间: 2019-4-14 15:12
回复 5# zaqmlp
谢谢。懂一些,没完全看懂。可能用面积来判断会更合理点。因为高和席会有单边超的情况
作者: WHY 时间: 2019-4-14 15:14
回复 4# printwu
你把顶楼脚本第 10~30行中 width 和 height 的取值范围按照你认为正确的值重新定义就好了。
作者: printwu 时间: 2019-4-14 15:30
回复 printwu
你把顶楼脚本第 10~30行中 width 和 height 的取值范围按照你认为正确的值重新定义 ...
WHY 发表于 2019-4-14 15:14
是的。已经改好了。谢谢您2年前写的代码基础,非常好用。谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |