小编Dad*_*Bit的帖子

Powershell 在 System.Drawing 中使用 .NET .DrawImage

我正在制作一个工具,可以自动裁剪和定位,无需将图像大小调整为其他图像。我在 .NET 的微软文档中找到了这个,但我无法理解如何在我的代码中实现。到目前为止,我可以从 Mojang API 下载图像,例如:

Bernd_L.png
Bernd_L.png

史蒂夫.png
史蒂夫

我想知道是否可以在坐标 8,0 处裁剪一个 8x8 像素的矩形1.png并将其粘贴到 Steve.png 顶部坐标 8,8 处,因此最后的输出将如下所示:

输出.png
输出.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")
Run Code Online (Sandbox Code Playgroud)

如果有一种更紧凑/优雅的方法来做到这一点,我真的很想知道!

编辑2

我发布了一个带有通用功能的答案来完成这项工作。

.net powershell system.drawing

6
推荐指数
1
解决办法
9164
查看次数

严格的 atoi/strtol 函数

在 C 中,当我使用:

int x = 0;
char str[] = " \t123abc";
x = atoi(str);
printf("%d\n", str); //123
Run Code Online (Sandbox Code Playgroud)

123被打印。我想知道是否有一个“严格”的 C 函数,如果字符串不完全是整数,它会返回 0。(我不关心数字符号(总是正数)和基数(总是 10))。

一些例子:

" \t123abc" -> 0
" 123abc" -> 0
"123abc" -> 0
" 123 " -> 0
"123" -> 123
"123\n" -> 0
Run Code Online (Sandbox Code Playgroud)

目前我创建了一个int sstoi (char *str)函数来做到这一点:

static const unsigned int pow10[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

int sstoi (char *str) {
    int result = 0, length = …
Run Code Online (Sandbox Code Playgroud)

c type-conversion

1
推荐指数
1
解决办法
150
查看次数

标签 统计

.net ×1

c ×1

powershell ×1

system.drawing ×1

type-conversion ×1