平时截图我们想要自动保存图片为png格式就有可能用GDI+,但是这种代码量太大,对于一贯支持简介代码最小依赖的人说不太合理, 后来看到英文论坛结合chatgpt得到一个简单的操作,就是用powershell 来执行
它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。
;保存之前确定剪切板中是否有图片(先截图到剪切板)
path:=A_desktop "\demo.png"
msgBox path
savepic(path)
;保存【剪切板】图片到指定位置,当图片width<minW 或者 height<minH时就会缩放图片 ,默认不缩放
savepic(path,minW:=0,minH:=0,scale:=1,imageType:="Png")
{
try{
ps1:=(
"Add-Type -AssemblyName System.Windows.Forms;"
. "$image = [System.Windows.Forms.Clipboard]::GetImage();"
. "$width = $image.Width;"
. "$height = $image.Height;"
. "if ($width -lt {2} -or $height -lt {3})"
. "{$width=$width *{4};"
. "$height=$height *{4};};"
. "[System.Drawing.Image+GetThumbnailImageAbort] $callback = { return $false };"
. "$resizedImage=$image.GetThumbnailImage($width, $height, $callback, [System.IntPtr]::Zero);"
. "$resizedImage.Save('{1}', [System.Drawing.Imaging.ImageFormat]::{5});"
. "$resizedImage.Dispose();"
. "$image.Dispose();"
)
ps1:=Format(ps1,path,minW,minH,scale,imageType)
shellExcuter(Format('powershell.exe -Command "{1}"',ps1))
}catch as e{
msgBox "Excute powershell Exception:" e.Message()
return
}
return 1
}
;Func 静默执行cmd命令,返回0 就是成功!
shellExcuter(str)
{
return DllCall("shell32\ShellExecute", "uint", 0, "str","open","str", "cmd","str",Format("/c{1}",str), "uint", 0, "int", 0)
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。