【发布时间】:2019-07-26 19:36:39
【问题描述】:
我正在制作一个工具,可以自动裁剪和定位,而无需将图像大小调整为其他图像。 我在 .NET 的 microsoft docs 上找到了this,但我不明白如何在我的代码中实现。到目前为止,我可以从 Mojang API 下载图像,例如:
我想知道我是否可以在坐标 8,0 处裁剪一个 8x8 像素的矩形并将其粘贴到坐标 8,8 处的 Steve.png 顶部,因此最后输出将如下所示:
我应该如何使用.NET函数.DrawImage来实现裁剪?
编辑
感谢@Caramiriel 提供的链接,我终于可以使用此脚本裁剪图像的一个区域:
Add-Type -AssemblyName System.Drawing
$Username = "Steve"
$destRect = new-object Drawing.Rectangle 8, 0, 8, 8
$srcRect = new-object Drawing.Rectangle 0, 8, 8, 8
$src=[System.Drawing.Image]::FromFile("$pwd\$Username.png")
$bmp=new-object System.Drawing.Bitmap 64,64
$graphics=[System.Drawing.Graphics]::FromImage($bmp)
$units = [System.Drawing.GraphicsUnit]::Pixel
$graphics.DrawImage($src, $destRect, $srcRect, $units)
$graphics.Dispose()
$bmp.Save("$pwd\output.png")
如果有更紧凑/优雅的方式,我真的很想知道!
编辑 2
我发布了一个带有通用功能的答案来完成这项工作。
【问题讨论】:
-
任何可用于 c# 的东西也可用于 powershell。如果您找到一个好的示例/实现,您可以将 c# 代码转换为 powershell 脚本。例如:stackoverflow.com/questions/734930/how-to-crop-an-image-using-c
-
如果您想要一个更紧凑/优雅的脚本,请在单独的函数中抽象矩形复制 :) 另外,请随时发布您的解决方案作为答案(自我回答很好,甚至鼓励+你得到声誉点):)
标签: .net powershell system.drawing