Board logo

标题: [其他] 批处理提取文件夹中jpg类型图片的名称及其打印尺寸(单位cm) [打印本页]

作者: Bumblebee    时间: 2017-1-8 23:42     标题: 批处理提取文件夹中jpg类型图片的名称及其打印尺寸(单位cm)

经常需要整理每日文件夹中的jpg类型图片的名称及其打印尺寸(cm),并把他们填写在Excle表格中。
如图所示
在Windows的图片属性中的详细信息窗格下面,可以看见宽度、高度(单位都是像素)和水平分辨率、垂直分辨率(都是打印分辨率),但是没有直接显示打印尺寸。我们可以通过运算 “像素÷分辨率” 得到“打印尺寸(单位英寸)”,然后把英寸转为cm,计算出需要的宽和高。
或者您有别的更简单的方法也可以试试!尺寸四舍五入精确到小数点后1位即可,结果按照文件名排序,可输出到一个记事本内。格式:文件名_宽×高
曾经有人提出类似的问题,这是链接,其中9楼@terse的代码
http://www.bathome.net/redirect. ... 9573&ptid=35923
运行良好,不过显示的是像素,没有经过运算 结果不是cm,仅供参考!谢谢了!期待高手回答,感谢万分!!
作者: pcl_test    时间: 2017-1-9 01:59

本帖最后由 pcl_test 于 2017-1-9 08:33 编辑
  1. //&cls&dir /a-d/b *.jpg *.jpeg 2>nul|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. var img = new ActiveXObject('WIA.ImageFile');
  4. while(!WSH.StdIn.AtEndOfStream){
  5.     var f = fso.GetFile(WSH.StdIn.ReadLine());
  6.     img.LoadFile(f);
  7.     WSH.Echo(fso.GetFileName(f)+' '+
  8.         (img.Width/img.HorizontalResolution*2.54).toFixed(1)+'x'+
  9.             (img.Height/img.VerticalResolution*2.54).toFixed(1));
  10. }
复制代码
  1. @echo off
  2. powershell ^
  3.     [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');^
  4.     ls *.jpg,*.jpeg^|%%{^
  5.         $img=[System.Drawing.Image]::FromFile($_.fullname);^
  6.         $_.Name+' '+^
  7.             ($img.Width/$img.HorizontalResolution*2.54).ToString('#0.0')+^
  8.                 'x'+($img.Height/$img.VerticalResolution*2.54).ToString('#0.0');^
  9.     }
  10. pause
复制代码

作者: Bumblebee    时间: 2017-1-10 00:45

回复 2# pcl_test
很好。我的是win10系统,感觉第一个代码比第二个代码运行速度要快,两个结果一致。
只是没有导出到记事本内,怎样才可以自动导出到一个叫做“图片尺寸”的记事本内呢?谢谢亲了!
作者: pcl_test    时间: 2017-1-10 10:31

回复 3# Bumblebee

参看你自己发的链接里的代码是在哪里修改输出到“图片尺寸.txt”的
作者: Bumblebee    时间: 2017-1-13 18:12

本帖最后由 Bumblebee 于 2017-1-13 21:51 编辑

回复 4# pcl_test
这是我根据你第一个代码,和参照我发的链接里的代码,修改来的。我感觉运行还好,你看看是否有错误的地方?
  1. //&cls&dir /a-d/b *.jpg *.jpeg 2>nul|cscript -nologo -E:JScript %0 >图片打印尺寸.txt & pause  & exit @end
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. var img = new ActiveXObject('WIA.ImageFile');
  4. while(!WSH.StdIn.AtEndOfStream){
  5.     var f = fso.GetFile(WSH.StdIn.ReadLine());
  6.     img.LoadFile(f);
  7.     WSH.Echo(fso.GetFileName(f)+' '+
  8.         (img.Width/img.HorizontalResolution*2.54).toFixed(1)+'x'+
  9.             (img.Height/img.VerticalResolution*2.54).toFixed(1));
  10. }
复制代码
【只修改了第一段后面的一些内容】




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