求助图片批处理:
目标与方向:
现在智能手机、电脑越来越多,图片资源也越来越丰富,用批处理制作适分辨率的墙纸很快也方便也能满足自己的喜好和要求。有一款手机墙纸切割的软件,其实插不错的,支持批量处理、支持缩放和裁切,裁切可以以任意边角点、中点为起始点,美中不足的是不能自己设置更多的分辨率大小,只能按软件本身提供的分辨率切割。想用批处理帮助解决。
自己做的过程:
本人爱好批处理之简洁微小,但由于我本人从未尝过此方面的知识,只能是照葫芦画瓢,从各地收集整理汇编有用的批处理代码。所以,做成的这个批处理程式,有许多难题需要解决。希望高手帮助完善和解决其中的难点。我想,我的难题对你们来说应该很简单。
我做的内容:
将收集到的P集中起来,做了一个综合菜单,如图。
1.拉伸缩放调整图片,指定宽、高
2.限制宽/高缩放图片,只指定其一
3.裁剪图片大小,可设置起点位置
这个P能做到的是缩放、裁切指定文件夹的图片,可以指定分辨率。
遇到问题:
1.图片按日期分类部分没有集合进去,原因是收集到的这段代码支持拖放文件夹。而菜单中的图片处理过程中,不知道怎样也能做成支持文件夹拖放。如果全部集合到一个P中会更好。也就是让处理过程也能支持拖放文件夹。
2.裁剪图片的那段代码,可以设置一个起始坐标值,但是能不能设置从图片中心点为基准点,也就是实现居中剪裁。
3.所有图片处理缩放、裁剪中都是将最后结果输入到原文件夹中,能不能做到另建文件夹放到里面。
4.处理完成的各式分辨率图片可能混在同一文件夹中,如何实现按分辨率分类存储在各自文件夹中,这个在论坛中见到这段代码,可是原帖者还要求了按比例16:10查找分类,我不会去掉这个比例部分,仅保留宽度或者高度限制就行了。
5.按图片时间分类那段中,可以按图片创建时间分储到文件夹中,但是判断只到了日期,如果都是同一天处理的也会在同一文件夹中,这样分类结果还是要手动浏览分存。有没有更好的办法。
——用到以下文件可在论坛中找到。
pvw32con.exe
nconvert.exe
最终想实现的:
也就是将一个文件夹中所有的图片按要求缩放裁剪成自己要的分辨率大小,并能实现自动分类保存,利于使用。- @echo off
-
- mode con: cols=80 lines=20
- MD 图片文件夹
- START 图片文件夹
- echo.
- echo.
- mshta vbscript:msgbox("请将要处理的图片放到“图片文件夹”中。! ",64,"我的提示")(window.close)
- echo.
- echo.
-
-
-
- :start
- cls
- title 批量调整图片
- color 0A
- ECHO.
- ECHO. ====================================
- echo.
- echo 1.拉伸缩放调整图片,指定宽、高
- echo.
- echo 2.限制宽/高缩放图片,只指定其一
- echo.
- echo 3.裁剪图片大小,可设置起点位置
- echo.
- ECHO. ====================================
- echo.
- set /p input= 请选择 :
- if "%input%"=="1" goto A
- if "%input%"=="2" goto B
- if "%input%"=="3" goto C
-
- :A
- @echo off
- title 按指定宽度高度缩放图片
- color 0B
- cls
- ECHO.
- ECHO 处理模式:调整图片大小
- ECHO.
- ECHO.
- ECHO 说明:按指定宽度高度缩放图片
- ECHO 输入格式为:宽度 高度 如:480 800 (中间用空格隔开)
- ECHO.
- ECHO.
- set/p 宽度与高度=请输入图片宽度与高度(空格隔开):
- ECHO 继续吗?
- PAUSE
-
- for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
- nconvert -out jpeg -resize %宽度与高度% "%%a"
- )
- ECHO 处理任务完成。
- mshta vbscript:msgbox("处理任务完成。! ",64,"我的软件")(window.close)
- GOTO START
-
- :B
- @echo off
- color 0E
- cls
- ECHO.
- ECHO 处理模式:调整图片大小
- ECHO.
- ECHO.
- ECHO 说明:如果只限制宽度,高度可为0
- ECHO 如果只限制高度,宽度可为0
- ECHO 输入格式为:宽度 高度 如:800 0
- ECHO.
- ECHO.
- set/p 宽度与高度=请输入图片宽度(空格隔开):
- ECHO 继续吗?
- PAUSE
-
- for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
- nconvert -out jpeg -ratio -resize %宽度与高度% "%%a"
- )
- ECHO 处理任务完成。
- ECHO 处理任务完成。
- mshta vbscript:msgbox("处理任务完成。! ",64,"我的软件")(window.close)
- GOTO START
-
-
- :C
- @echo off
- color 0C
- cls
- ECHO.
- ECHO.
- ECHO 处理模式:裁剪图片
- ECHO.
- ECHO 说明:
- ECHO 起始横坐标和纵坐标输入格式为:横 纵 如:0 50
- ECHO 宽度高度输入格式为:宽度 高度 如:800 0
- ECHO.
- ECHO.
- set/p 横纵坐标=请输入图片起始横坐标和纵坐标(空格隔开):
- ECHO.
- set/p 宽度与高度=请输入图片宽度与高度(空格隔开):
- ECHO 继续吗?
- PAUSE
-
- for /f "tokens=* delims=" %%a in ('dir /a-d/s/b "图片文件夹\*.jpg" "图片文件夹\*.bmp"') do (
- nconvert -out jpeg -crop %横纵坐标% %宽度与高度% "%%a"
- )
- ECHO 处理任务完成。
- mshta vbscript:msgbox("处理任务完成。! ",64,"我的软件")(window.close)
- GOTO START
-
-
-
- ::crop是裁剪的意思
- ::-crop 0 0 480 800 起点坐标,纵点坐标,宽度,高度
- GOTO START
复制代码
|