首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定部件的Powershell ScreenShot

特定部件的Powershell ScreenShot
EN

Stack Overflow用户
提问于 2014-10-24 23:00:16
回答 2查看 1.3K关注 0票数 1

我想截取屏幕上一个非常特殊的部分的截图。就像我只想在屏幕中央截图一样。我该怎么做呢?如何将对齐方式设置为仅裁剪特定区域。我从stackoverflow得到的代码只是为了截图:

代码语言:javascript
复制
[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"

如果我们可以编辑这个。

EN

回答 2

Stack Overflow用户

发布于 2014-10-26 02:10:15

为了搞笑,我在这里制作了一个位于屏幕中央的矩形截图。

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2014-10-24 23:17:22

代码中已经包含了解决方案,它需要一个矩形$bounds。把它移到你喜欢的位置。如果你想知道显示器的大小,你可以参考这个问题:Get Screen resolution using WMI/powershell in Windows 7我还会提到,当前的代码(我想)是以BMP格式保存的,而你指定了一个.jpeg扩展名。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26550642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档