自己写的一个获取图片信息的,速度不快。使用了三方nconvert.exe 和外部JS
改改应该能用^_^- ::获取计算图片尺寸等
- @echo off
- cd/d%~dp0
- set "picfile=测试图片.jpg"
- call :picInfo pxWidth pxHeight xDpi yDpi Width Height "%picfile%"
- echo 图片名:*%picfile%*
- echo 像素宽x高:%pxWidth%x%pxHeight% 分辨率宽%xDpi%dpi 高%yDpi%dpi
- echo 尺寸宽x高:%Width%x%Height% cm
- pause
- goto :eof
- ::====完====
-
- :picInfo file pW pH xdpi ydpi width height pfile ::获取图片宽高信息
- setlocal
- if not exist %7 echo/没有图片!&&pause&goto :eof
- for /f "tokens=1,2 delims=: " %%p in ('"nconvert -info %~s7"')do (
- set "%%p=%%q"
- )
- set N=
- if "%xdpi%" gtr "a" (
- for /f "tokens=1-4 delims=(): " %%p in ('"nconvert -fullinfo %~s7|find "Resolution""')do call :FinfoP "%%p%%q=%%s"
- )
- if not "%N%"=="" set/a xDpi=XResolution,yDpi=YResolution
- set N=
- set "pxW=%width%"
- set "pxH=%height%"
- if not defined pxW echo/获取宽度像素失败!&&pause&goto :eof
- if not defined pxH echo/获取高度像素失败!&&pause&goto :eof
- if not defined Xdpi echo/获取水平DPI失败!&&pause&goto :eof
- if not defined Ydpi echo/获取垂直DPI失败!&&pause&goto :eof
- ::JS根据像素及分辨率计算图片宽高cm
- for /f "tokens=1-2 delims=x " %%x in ('"cscript -nologo -e:jscript CalcDeci.js %pxW% %pxH% %Xdpi% %Ydpi%"')do (
- set xWidth=%%x&set yHeight=%%y
- )
- endlocal&set %1=%pxW%&set %2=%pxH%&set %3=%xDpi%&set %4=%yDpi%&set %5=%xWidth%&set %6=%yHeight%
- goto :eof
-
- :FinfoP "Str1Str2=Val4"
- set/aN+=1
- if %N% leq 3 set/a %1
- goto :eof
复制代码 .js文件存在.bat同目录下- //CalcDeci.js 计算小数,这里保留一位(批处理不能计算小数,JS计算后结果返回BAT)
- //测试通过:CalcDeci.js 831 1530 96 96
- Width = WScript.Arguments(0);
- Height = WScript.Arguments(1);
- Xdpi = WScript.Arguments(2);
- Ydpi = WScript.Arguments(3); //Math.round为四舍五入取整
- WScript.Echo(Math.round(Width*2.54/Xdpi*10)/10+'x'+Math.round(Height*2.54/Ydpi*10)/10);
复制代码
|