我想截取屏幕上一个非常特殊的部分的截图。就像我只想在屏幕中央截图一样。我该怎么做呢?如何将对齐方式设置为仅裁剪特定区域。我从stackoverflow得到的代码只是为了截图:
[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
function screenshot([Drawing.Rectangle]$bounds, $path) {
$bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height
$graphics = [Drawing.Graphics]::FromImage($bmp)
$graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)
$bmp.Save($path)
$graphics.Dispose()
$bmp.Dispose()
}
$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, 1000, 900)
screenshot $bounds "C:\screenshot.jpeg"如果我们可以编辑这个。
发布于 2014-10-26 02:10:15
为了搞笑,我在这里制作了一个位于屏幕中央的矩形截图。
$captureSize = @{ Height = 300; Width = 200}
$screenDimensions = Get-WmiObject -Class Win32_DesktopMonitor | Select-Object -First 1 ScreenWidth,ScreenHeight
$screenCenterPoint = @{FromTop = ($screenDimensions.ScreenHeight) / 2; FromLeft = ($screenDimensions.ScreenWidth) /2 }
$box = @{}
$box.Left = $screenCenterPoint.FromLeft - $captureSize.Width / 2
$box.Top = $screenCenterPoint.FromTop - $captureSize.Height / 2
$box.Right = $box.Left + $captureSize.Width
$box.Bottom = $box.Top + $captureSize.Height
$bounds = [Drawing.Rectangle]::FromLTRB($box.Left,$box.Top,$box.Right,$box.Bottom)将$captureSize设置为所需的值。使用由Alpha M Cubed Get Screen resolution using WMI/powershell in Windows 7链接的SO问题,我们将“主屏幕”维度填充到$screenDimensions中。使用一些简单的数学运算,没有错误检测,所以我们可以计算出盒子相对于屏幕中心的位置。函数和函数调用保持不变。
发布于 2014-10-24 23:17:22
代码中已经包含了解决方案,它需要一个矩形$bounds。把它移到你喜欢的位置。如果你想知道显示器的大小,你可以参考这个问题:Get Screen resolution using WMI/powershell in Windows 7我还会提到,当前的代码(我想)是以BMP格式保存的,而你指定了一个.jpeg扩展名。
https://stackoverflow.com/questions/26550642
复制相似问题