[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 转换图片的批处理怎样实现拖拽和智能比例判断?

因为电脑里有太多图片要处理,所以在论坛看着帖子教程摸索了一阵子,搞了个一键转换图片的bat处理。但水平实在不行,只能够将就用一下。
希望论坛大佬帮我加上两个功能。
1、希望能够实现拖拽图片到bat图标就能够运行。
2、希望能够智能比例判断,当图片宽度大于高度时,修改图片宽度为1920。当图片高度大于宽度时,修改图片高度为1080。
先谢谢大家了。
  1. @echo off&setlocal
  2. for /f "delims=" %%z in ('dir/b nconvert.exe') do set "nconvert=%%~fz"
  3. set imageWidth=1080
  4. set iQuility=100
  5. for /f "delims=" %%I in ('dir/b/s/a-d *.jpg,*.jpeg,*.png,*.bmp,*.gif') do "%nconvert%" -c 5 -q %iQuility% -overwrite -out jpeg -D -ratio -resize 0 %imageWidth% "%%I">nul
  6. echo ==============&echo Done!&echo.
复制代码

诚心求教,等待大佬解答!

TOP

ANSI保存,输出*_cut.*
  1. @echo off
  2. if "%~1"=="" ( echo 请拖动图片文件到bat! & pause & exit )
  3. REM 设置nconvert.exe路径
  4. set "path=%path%;C:\Users\lenovo\Desktop\XnView"
  5. :loop
  6. call :cutImg "%~1"
  7. shift /1
  8. if not "%~1"=="" goto :loop
  9. pause&exit
  10. :cutImg
  11. echo 处理: %~1
  12. echo %~x1 | findstr /i "jpg jpeg png bmp gif png" >nul 2>nul || (
  13. echo 非图片文件!
  14. echo -----------------------------------------
  15. goto :eof
  16. )
  17. set "width=0" & set "height=0"
  18. for /f "tokens=2 delims=:" %%i in ('nconvert -info "%~1" ^| findstr /i "width height"') do (
  19. call set /a "0/%%width%%" >nul 2>nul && set "height=%%i" || set "width=%%i"
  20. )
  21. echo 原尺寸: %width% %height%
  22. if %width% equ %height% ( echo ----------------------------------------- & goto :eof )
  23. if %width% gtr %height% set "newsize=1920 %height%
  24. if %width% lss %height% set "newsize=%width% 1080"
  25. echo 新尺寸: %newsize%
  26. nconvert -quiet -overwrite -resize %newsize% -o "%~dp1%~n1_cut%~x1" "%~1" && echo 完成!
  27. echo -----------------------------------------
复制代码

TOP

回复 3# went


非常感谢你的指导,不过有个缺陷啊,图片没有等比例缩放,纯粹拉伸了。

TOP

本帖最后由 myacg 于 2020-4-9 11:14 编辑

我搜论坛教程改了一下,这样就行了,比例正常,再次感谢。

if %width% gtr %height% set "newsize=1920 0
if %width% lss %height% set "newsize=0 1080"

不过这样改有个缺陷,就是新尺寸显示不正常了,不过不影响使用。

TOP

返回列表