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

[问题求助] 求助 vbs调用Windows自带画图工具对图片打开后保存-批量方式

  1. set wshell = wscript.createobject("wscript.shell")
  2. wshell.run "mspaint.exe 20221124123033.jpg"
  3. WScript.Sleep 2000
  4. wshell.SendKeys "^{s}"
  5. WScript.Sleep 2000
  6. wshell.SendKeys "%{F4}"
复制代码
求助高手,如何将以上用画图工具打开图片并保存的代码,做成遍历文件夹文件,循环执行的形式。

  1. set shell=createobject("shell.application")
  2. foldername="C:\Users"
  3. set nowfolder=shell.namespace(foldername)
  4. Set Img = CreateObject("WIA.ImageFile")
  5. Set IP = CreateObject("WIA.ImageProcess")
  6. Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
  7. set re=new regexp
  8. re.pattern=".(png|bmp|wbmp)$"'这一行自己加
  9. IP.Filters.Add IP.FilterInfos("Convert").FilterID
  10. IP.Filters(1).Properties("FormatID").Value = wiaFormatJPEG
  11. filetree nowfolder
  12. sub filetree(fdobject)
  13. set items=fdobject.items
  14. for each item in items
  15. if item.isfolder then
  16. filetree item.getfolder
  17. elseif re.test(item.path) then
  18. '输出到当前文件夹 确保被转换的不是jpg格式
  19. convert item.path
  20. end if
  21. next
  22. end sub
  23. sub convert(filep)
  24. img.loadfile filep
  25. set img=ip.apply(img)
  26. img.savefile re.replace(filep,".jpg")
  27. end sub
复制代码

TOP

啧 你要转换图片格式你直说啊

TOP

回复 7# likongshun


    你能否找一张图片作为例子,把操作前和操作后的图片打包上传到网盘我看看?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# likongshun

这重编码了吧,图片质量降低了,而且也不一定能减少体积,像灰阶图可能反而增加体积

TOP

能减少文件大小
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. strFolder = "./"
  3. Set objFolder = objFSO.GetFolder(strFolder)
  4. Set colFiles = objFolder.Files
  5. For Each strFile in colFiles
  6.     If LCase(objFSO.GetExtensionName(strFile)) = "jpg" Then
  7.         ' 在此处执行操作,例如打印文件名或打开文件等
  8.         set wshell = wscript.createobject("wscript.shell")
  9.         wshell.run("mspaint.exe "+strFile)
  10.         WScript.Sleep 2000
  11.         wshell.SendKeys "^{s}"
  12.         WScript.Sleep 2000
  13.         wshell.SendKeys "%{F4}"
  14.     End If
  15. Next
复制代码

TOP

回复 5# hlzj88


    话说保存为jpg压缩理论上来讲和系统没关系 只和压缩算法有关
你好

TOP

这个问题我以前在其他论坛也提过,这样做(另存为同名jpg)的目的可以缩小同尺寸图片占用的空间(xp下),win7下效果不大。win10没用过。

推荐使用 jpeg resizer 这个软件。效率高功能多。
当 部分 jpeg resizer 不能加载的jpg文件,使用上面的代码处理后,可以加载。
目的,学习批处理

TOP

打开并保存对图片没啥意义啊,打开并另存至少还能转换格式

TOP

根据我用画图和sendkeys的十足经验 你这段代码只会极其浪费时间并且开出一堆画图窗口且不会关闭任何一个
vbs画图用wia啊兄弟 况且你打开,然后保存有什么意义?
你好

TOP

回复 1# likongshun


    能否介绍一下画图另存为这个操作的目的是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表