我想截取屏幕特定部分的屏幕截图。好像我只想在屏幕中央截取图像的屏幕截图。我怎样才能做到这一点?如何将对齐设置为仅裁剪特定区域。我从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"
如果我们可以编辑它。
答案 0 :(得分:0)
对于掷骰子和笑声,我在这里制作了一些东西,它将制作一个以屏幕为中心的矩形截图。
$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
。使用一些简单的数学,没有错误检测,所以我们计算相对于屏幕中心的框的位置。功能和功能调用保持不变。
答案 1 :(得分:-1)
代码已包含解决方案,它需要一个矩形,$ bounds。将其移至您的首选位置。如果您想查找显示器的大小,可以参考以下问题:Get Screen resolution using WMI/powershell in Windows 7 我还要提到当前代码(我认为)以BMP格式保存,而您指定了.jpeg扩展名。