Board logo

标题: [文件操作] 批处理如何实现裁剪图片? [打印本页]

作者: crownking1983    时间: 2015-7-25 02:50     标题: 批处理如何实现裁剪图片?

本帖最后由 pcl_test 于 2016-5-8 02:27 编辑

求助1000多张图片,宽度高度尺寸都不一样,想批量去掉每个图片最上面100像素和最下面200像素,如何实现批处理——

实例——
我有1000 多张图片 有1200*800的 有 1600*900的 还有 1366*768的 等等等等……
现在我要批处理去掉每个图片最上面100像素和最下面200像素,1200*800的变成1200*500的,1600*900的的变成1600*600的,1366*768的变成1366*468的 等等等等……

求像我这种宽度高度尺寸都不一样的原图片怎么批处理去掉每个图片最上面100像素和最下面200像素。
作者: tmplinshi    时间: 2015-7-25 10:58

本帖最后由 tmplinshi 于 2015-7-25 11:17 编辑
  1. mogrify -crop +0+100 -crop +0-200 *.jpg
复制代码
mogrify.exe 是 ImageMagick 的工具之一,自己去搜索下载 ImageMagick。

或者这里下载: mogrify (ImageMagick 6.9.1--7 Q16 x86 2015-07-04).7z
作者: pcl_test    时间: 2015-7-25 11:46

本帖最后由 pcl_test 于 2015-7-25 11:56 编辑
  1. <!-- :
  2. @echo off
  3. md ".\处理结果\" 2>nul
  4. dir /b *.jpg|mshta "%~f0"
  5. ping -n 2 0 >nul&exit /b
  6. -->
  7. <script language=vbs>
  8. Dim Img,IP,file
  9. Set fso = CreateObject("Scripting.FileSystemObject")
  10. Set StdIn = fso.GetStandardStream(0)
  11. Do While StdIn.AtEndOfStream<>true
  12.     Set Img = CreateObject("WIA.ImageFile")
  13.     Set IP = CreateObject("WIA.ImageProcess")
  14.     file = StdIn.ReadLine
  15.     Img.LoadFile file
  16.     If Img.Height>305 Then
  17.         IP.Filters.Add IP.FilterInfos("Crop").FilterID  
  18.         IP.Filters(1).Properties("Top") = 100
  19.         IP.Filters(1).Properties("Bottom") = 200
  20.         Set Img = IP.Apply(Img)  
  21.         Img.SaveFile ".\处理结果\"&file
  22.     End If
  23. Loop
  24. Msgbox "完成!"
  25. </script>
  26. <script>close()</script>
复制代码

作者: crownking1983    时间: 2015-7-25 23:45

回复 3# pcl_test


    高!实在是高!!我真是佩服的五体投地啊!!
但是大神 有个问题我想问下 这个BAT命令里 哪几行命令是设置处理后的图片文件的保存质量的?
作者: crownking1983    时间: 2015-7-25 23:47

回复 3# pcl_test


    就是说,我想让我处理后生成的文件与原图片相比质量无损。  (PS:我刚才用您的这个批处理命令处理了一个3M的超大原图 处理后的图片仅有900K大 很明显图片保存质量有很大的损耗)
作者: crownking1983    时间: 2015-7-26 00:10

回复 2# tmplinshi


    非常感谢您 您这个太完美了!!而且言简意赅 解决了我的所有问题!感激大神!




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