找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14699|回复: 10

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

[复制链接]
发表于 2023-8-4 21:44:05 | 显示全部楼层 |阅读模式
  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}"
复制代码
求助高手,如何将以上用画图工具打开图片并保存的代码,做成遍历文件夹文件,循环执行的形式。
发表于 2023-8-4 21:55:19 | 显示全部楼层
回复 1# likongshun


    能否介绍一下画图另存为这个操作的目的是什么?
发表于 2023-8-4 22:14:17 | 显示全部楼层
根据我用画图和sendkeys的十足经验 你这段代码只会极其浪费时间并且开出一堆画图窗口且不会关闭任何一个
vbs画图用wia啊兄弟 况且你打开,然后保存有什么意义?
发表于 2023-8-4 22:25:47 | 显示全部楼层
打开并保存对图片没啥意义啊,打开并另存至少还能转换格式
发表于 2023-8-5 12:57:00 | 显示全部楼层
这个问题我以前在其他论坛也提过,这样做(另存为同名jpg)的目的可以缩小同尺寸图片占用的空间(xp下),win7下效果不大。win10没用过。

推荐使用 jpeg resizer 这个软件。效率高功能多。
当 部分 jpeg resizer 不能加载的jpg文件,使用上面的代码处理后,可以加载。
发表于 2023-8-5 17:02:34 | 显示全部楼层
回复 5# hlzj88


    话说保存为jpg压缩理论上来讲和系统没关系 只和压缩算法有关
 楼主| 发表于 2023-8-7 13:39:03 | 显示全部楼层
能减少文件大小

  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
复制代码
发表于 2023-8-17 20:17:40 | 显示全部楼层
回复 7# likongshun

这重编码了吧,图片质量降低了,而且也不一定能减少体积,像灰阶图可能反而增加体积
发表于 2023-8-17 20:30:47 | 显示全部楼层
回复 7# likongshun


    你能否找一张图片作为例子,把操作前和操作后的图片打包上传到网盘我看看?
发表于 2023-8-18 12:35:32 | 显示全部楼层
啧 你要转换图片格式你直说啊
发表于 2023-8-18 12:48:10 | 显示全部楼层

  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:27 , Processed in 0.021133 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表