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


    另外还有,能否放到文件夹外面运行 因为这几千个文件在不同的文件夹里 处理完以后还得放回原文件夹 不然网站里的引用链接就都完了

TOP

回复 2# went


    啊大神,恕我愚笨,这个不是bat批处理命令对吗?保存为ps1文件后,需要安装什么软件来运行吗?

TOP

本帖最后由 went 于 2020-2-13 16:25 编辑
  1. function cutImg {
  2.     param (
  3.         [parameter(Mandatory=$true)]$src,
  4.         $top=0,$bottom=0,$left=0,$rigth=0
  5.     )
  6.     if(Test-Path -LiteralPath $src){$srcFile=[System.IO.FileInfo]::new($src)}else{Write-Host "路径错误";return}
  7.     if(($top -lt 0) -or ($bottom -lt 0) -or ($left -lt 0) -or ($rigth -lt 0)){Write-Host "参数小于零";return}
  8.     if(($top+$bottom) -ge 100){Write-Host "高为零";return}
  9.     if(($left+$right) -ge 100){Write-Host "款为零";return}
  10.     $srcBmp=[System.Drawing.Bitmap]::FromFile($src) #源图片
  11.     [int]$tagWidth=$srcBmp.Width*(1-$top/100-$bottom/100)
  12.     [int]$tagHeight=$srcBmp.Height*(1-$left/100-$rigth/100)
  13.     $srcRect=[System.Drawing.Rectangle]::new($srcBmp.Width*($left/100),$srcBmp.Height*($top/100),$tagWidth,$tagHeight) #源裁剪矩形
  14.     $tagRect=[System.Drawing.Rectangle]::new(0,0,$tagWidth,$tagHeight) #目标矩形
  15.     $tagBmp=[System.Drawing.Bitmap]::new($tagWidth,$tagHeight) #目标图片
  16.     $g=[System.Drawing.Graphics]::FromImage($tagBmp) #画笔
  17.     $g.DrawImage($srcBmp,$tagRect,$srcRect,[System.Drawing.GraphicsUnit]::Pixel)
  18.     $tagBmp.Save(($srcFile.DirectoryName+"\"+$srcFile.BaseName+"_cut"+$srcFile.Extension),[System.Drawing.Imaging.ImageFormat]::Jpeg)
  19.     $srcBmp.Dispose()
  20.     $tagBmp.Dispose()
  21.     Write-Host ($src+"`t处理完成!")
  22. }
  23. [void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
  24. dir -Filter "*.jpg" -File | foreach {cutImg -src ($_.FullName) -top 10 -bottom 10 -left 10 -rigth 10}
  25. pause
复制代码
保存ps1文件,放到jpg文件目录下右键运行
记得先测试一下

TOP

返回列表