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

保存为 "图片剪裁.bat",能处理当前目录和所有子目录中的图片,直接覆盖原图. 先测试.
  1. ' &cls&@cscript -nologo -e:vbscript "%~f0" "%~dp0" & pause & exit /b
  2. ' 脚本功能:剪裁图片-Crop Image, 四周剪裁10%,并覆盖源文件
  3. ' 用法:script.vbs file1 file2 ... folder1 folder2 ...
  4. Option Explicit
  5. On Error Resume Next
  6. If WScript.Arguments.Count = 0 Then
  7.   WScript.Echo "参数个数不能为0"
  8.   WScript.Quit 1
  9. End If
  10. Const conIMAGETYPES = "|jpg|jpeg|png|bmp|tiff|gif|" ' 图片类型列表
  11. Const conRECURSE = True ' 是否遍历子目录
  12. Dim fso
  13. Set fso = CreateObject("Scripting.FileSystemObject")
  14. With CreateObject("WScript.Shell")
  15.   .CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)
  16. End With
  17. Dim Img 'As ImageFile
  18. Dim IP 'As ImageProcess
  19. Set Img = CreateObject("WIA.ImageFile")
  20. Set IP = CreateObject("WIA.ImageProcess")
  21. IP.Filters.Add IP.FilterInfos("Crop").FilterID
  22. ShowError
  23. Dim i,strArgi
  24. For i = 0 To WScript.Arguments.Count - 1
  25.   strArgi = WScript.Arguments(i)
  26.   If fso.FileExists(strArgi) Then
  27.     GenFile fso.GetFile(strArgi)
  28.   ElseIf fso.FolderExists(strArgi) Then
  29.     GenFolder fso.GetFolder(strArgi)
  30.   Else
  31.     WScript.Echo "找不到文件或目录:" & strArgi
  32.   End If
  33. Next
  34. ShowError
  35. Set fso = Nothing
  36. Set Img = Nothing
  37. Set IP = Nothing
  38. WScript.Quit 0
  39. ' Sub functions
  40. Sub GenFile(objFile)
  41.   On Error Resume Next
  42.   If InStr(1,conIMAGETYPES,"|" & fso.GetExtensionName(objFile.Name) & "|",vbTextCompare) Then
  43.     WScript.Echo "处理图片:" & objFile.Path
  44.     CropImage objFile.Path,objFile.Path
  45.   Else
  46.    ' WScript.Echo "未处理图片:" & objFile.Path
  47.   End If
  48.   ShowError
  49. End Sub
  50. Sub GenFolder(objFolder)
  51.   On Error Resume Next
  52.   Dim objFile,objSubFolder
  53.   ' WScript.Echo "处理目录:" & objFolder.Path
  54.   For Each objFile In objFolder.Files
  55.     GenFile objFile
  56.   Next
  57.   If conRECURSE Then
  58.     For Each objSubFolder In objFolder.SubFolders
  59.       GenFolder objSubFolder
  60.     Next
  61.   End If
  62.   ShowError
  63. End Sub
  64. Sub CropImage(strImageSrc,strImageDst)
  65.   On Error Resume Next
  66.   Img.LoadFile strImageSrc
  67.   IP.Filters(1).Properties("Left") = Img.Width \ 10
  68.   IP.Filters(1).Properties("Top") = Img.Height \ 10
  69.   IP.Filters(1).Properties("Right") = Img.Width \ 10
  70.   IP.Filters(1).Properties("Bottom") = Img.Height \ 10
  71.   Set Img = IP.Apply(Img)
  72.   If fso.FileExists(strImageDst) Then
  73.     fso.DeleteFile strImageDst,True
  74.   End If
  75.   Img.SaveFile strImageDst
  76.   ShowError
  77. End Sub
  78. Sub ShowError()
  79.   If Err.Number <> 0 Then
  80.     WScript.Echo "Err # " & Err.Number & vbNewLine & _
  81.     "Description: " & Err.Description & vbnewline & _
  82.     "Source: " & Err.Source
  83.     Err.Clear
  84.   End If
  85. End Sub
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

本帖最后由 flashercs 于 2020-2-14 14:59 编辑

回复 6# went

用GDI处理图片要建议:
    1.新图片的dpi最好保持与原图片一致,比如原图是350dpi,新图也要是350dpi,而Graphics画出默认是96dpi
2.新图片jpeg的压缩率要保持与原图片一致或接近.而jpeg默认保存的压缩率是50%
微信:flashercs
QQ:49908356

TOP

返回列表