Board logo

标题: [文件操作] 批处理墙纸切割器如何完善? [打印本页]

作者: 墨者革离    时间: 2011-7-3 10:23     标题: 批处理墙纸切割器如何完善?

求助图片批处理:

目标与方向:
    现在智能手机、电脑越来越多,图片资源也越来越丰富,用批处理制作适分辨率的墙纸很快也方便也能满足自己的喜好和要求。有一款手机墙纸切割的软件,其实插不错的,支持批量处理、支持缩放和裁切,裁切可以以任意边角点、中点为起始点,美中不足的是不能自己设置更多的分辨率大小,只能按软件本身提供的分辨率切割。想用批处理帮助解决。

自己做的过程:
    本人爱好批处理之简洁微小,但由于我本人从未尝过此方面的知识,只能是照葫芦画瓢,从各地收集整理汇编有用的批处理代码。所以,做成的这个批处理程式,有许多难题需要解决。希望高手帮助完善和解决其中的难点。我想,我的难题对你们来说应该很简单。

我做的内容:
    将收集到的P集中起来,做了一个综合菜单,如图。
         1.拉伸缩放调整图片,指定宽、高
         2.限制宽/高缩放图片,只指定其一
         3.裁剪图片大小,可设置起点位置
    这个P能做到的是缩放、裁切指定文件夹的图片,可以指定分辨率。

遇到问题:
    1.图片按日期分类部分没有集合进去,原因是收集到的这段代码支持拖放文件夹。而菜单中的图片处理过程中,不知道怎样也能做成支持文件夹拖放。如果全部集合到一个P中会更好。也就是让处理过程也能支持拖放文件夹。
    2.裁剪图片的那段代码,可以设置一个起始坐标值,但是能不能设置从图片中心点为基准点,也就是实现居中剪裁。
    3.所有图片处理缩放、裁剪中都是将最后结果输入到原文件夹中,能不能做到另建文件夹放到里面。
    4.处理完成的各式分辨率图片可能混在同一文件夹中,如何实现按分辨率分类存储在各自文件夹中,这个在论坛中见到这段代码,可是原帖者还要求了按比例16:10查找分类,我不会去掉这个比例部分,仅保留宽度或者高度限制就行了。
    5.按图片时间分类那段中,可以按图片创建时间分储到文件夹中,但是判断只到了日期,如果都是同一天处理的也会在同一文件夹中,这样分类结果还是要手动浏览分存。有没有更好的办法。
——用到以下文件可在论坛中找到。
pvw32con.exe
nconvert.exe

最终想实现的:
    也就是将一个文件夹中所有的图片按要求缩放裁剪成自己要的分辨率大小,并能实现自动分类保存,利于使用。
  1. @echo off
  2. mode con: cols=80 lines=20
  3. MD 图片文件夹
  4. START 图片文件夹
  5. echo.
  6. echo.
  7. mshta vbscript:msgbox("请将要处理的图片放到“图片文件夹”中。!        ",64,"我的提示")(window.close)
  8. echo.
  9. echo.
  10. :start
  11. cls
  12. title 批量调整图片
  13. color 0A
  14. ECHO.
  15. ECHO.     ====================================
  16. echo.
  17. echo         1.拉伸缩放调整图片,指定宽、高
  18. echo.
  19. echo         2.限制宽/高缩放图片,只指定其一
  20. echo.
  21. echo         3.裁剪图片大小,可设置起点位置
  22. echo.
  23. ECHO.     ====================================
  24. echo.
  25. set /p input=    请选择 :
  26. if "%input%"=="1" goto A
  27. if "%input%"=="2" goto B
  28. if "%input%"=="3" goto C
  29. :A
  30. @echo off
  31. title 按指定宽度高度缩放图片
  32. color 0B
  33. cls
  34. ECHO.
  35. ECHO      处理模式:调整图片大小
  36. ECHO.
  37. ECHO.
  38. ECHO       说明:按指定宽度高度缩放图片
  39. ECHO       输入格式为:宽度 高度 如:480 800 (中间用空格隔开)
  40. ECHO.
  41. ECHO.
  42. set/p 宽度与高度=请输入图片宽度与高度(空格隔开):
  43. ECHO 继续吗?
  44. PAUSE
  45. for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
  46. nconvert -out jpeg -resize %宽度与高度% "%%a"
  47. )
  48. ECHO    处理任务完成。
  49. mshta vbscript:msgbox("处理任务完成。!        ",64,"我的软件")(window.close)
  50. GOTO START
  51. :B
  52. @echo off
  53. color 0E
  54. cls
  55. ECHO.
  56. ECHO      处理模式:调整图片大小
  57. ECHO.
  58. ECHO.
  59. ECHO       说明:如果只限制宽度,高度可为0
  60. ECHO       如果只限制高度,宽度可为0
  61. ECHO       输入格式为:宽度 高度 如:800 0
  62. ECHO.
  63. ECHO.
  64. set/p 宽度与高度=请输入图片宽度(空格隔开):
  65. ECHO 继续吗?
  66. PAUSE
  67. for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
  68. nconvert -out jpeg -ratio -resize %宽度与高度% "%%a"
  69. )
  70. ECHO    处理任务完成。
  71. ECHO    处理任务完成。
  72. mshta vbscript:msgbox("处理任务完成。!        ",64,"我的软件")(window.close)
  73. GOTO START
  74. :C
  75. @echo off
  76. color 0C
  77. cls
  78. ECHO.
  79. ECHO.
  80. ECHO      处理模式:裁剪图片
  81. ECHO.
  82. ECHO       说明:
  83. ECHO       起始横坐标和纵坐标输入格式为:横 纵 如:0 50
  84. ECHO       宽度高度输入格式为:宽度 高度 如:800 0
  85. ECHO.
  86. ECHO.
  87. set/p 横纵坐标=请输入图片起始横坐标和纵坐标(空格隔开):
  88. ECHO.
  89. set/p 宽度与高度=请输入图片宽度与高度(空格隔开):
  90. ECHO 继续吗?
  91. PAUSE
  92. for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
  93. nconvert -out jpeg -crop %横纵坐标% %宽度与高度%  "%%a"
  94. )
  95. ECHO    处理任务完成。
  96. mshta vbscript:msgbox("处理任务完成。!        ",64,"我的软件")(window.close)
  97. GOTO START
  98. ::crop是裁剪的意思
  99. ::-crop 0 0 480 800 起点坐标,纵点坐标,宽度,高度
  100. GOTO START
复制代码

作者: batman    时间: 2011-7-3 12:28

几行核心代码搞了个这么长的篇幅,不过还是支持原创,特别是有实际应用价值的原创作品!
作者: 墨者革离    时间: 2011-7-3 23:36

我知道代码很简单,可是我不会。作为一个可用的作品,除了实用外,在可能的情况下,美化和智能些应该是适应需要的。
求完善。




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