From 38b2199d4b6010a00caee6c7ffa8f8da1361c56f Mon Sep 17 00:00:00 2001 From: yu <191972707@qq.com> Date: Tue, 3 Nov 2026 13:58:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A3=81=E5=89=AA=E5=9B=BE=E5=83=8F?= =?UTF-8?q?=E8=84=9A=E6=9C=ACNew-Object=E4=B8=8D=E8=83=BD=E7=BD=AE?= =?UTF-8?q?=E4=BA=8E.NET=E6=96=B9=E6=B3=95=E5=8F=82=E6=95=B0=E8=A1=A8(?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E4=BB=8E=E6=9C=AA=E8=B7=91=E9=80=9A=E7=9A=84?= =?UTF-8?q?=E6=A0=B9=E5=9B=A0),=20=E6=94=B9=E7=94=A8[Type]::new()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/capabilities/remaining-core.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/capabilities/remaining-core.ts b/src/main/capabilities/remaining-core.ts index 6f67b43..1411461 100644 --- a/src/main/capabilities/remaining-core.ts +++ b/src/main/capabilities/remaining-core.ts @@ -179,7 +179,10 @@ register("Image_CropImg", async (_ctx, node, args) => { const x = num(args, ["xstart"], 0), y = num(args, ["ystart"], 0), width = num(args, ["xend"], 100) - x, height = num(args, ["yend"], 100) - y; if (width <= 0 || height <= 0) throw new RuntimeError("validation_error", `裁剪区域无效(宽 ${width} × 高 ${height})`, { nodeId: node.id, componentId: node.componentId, recommendation: "终点坐标需要大于起点坐标(单位是图片上的像素)" }); fs.mkdirSync(path.dirname(output), { recursive: true }); - await powershell(`Add-Type -AssemblyName System.Drawing;$image=[System.Drawing.Image]::FromFile(${psString(input)});$rect=New-Object System.Drawing.Rectangle(${x},${y},${width},${height});$bitmap=New-Object System.Drawing.Bitmap($rect.Width,$rect.Height);$graphics=[System.Drawing.Graphics]::FromImage($bitmap);$graphics.DrawImage($image,New-Object System.Drawing.Rectangle(0,0,$rect.Width,$rect.Height),$rect,[System.Drawing.GraphicsUnit]::Pixel);$bitmap.Save(${psString(output)});$graphics.Dispose();$bitmap.Dispose();$image.Dispose()`); + // 注意: .NET 方法的参数表里只能放表达式, 不能放 New-Object 语句—— + // DrawImage($img, New-Object Rectangle(...), ...) 会解析报错"','后面缺少表达式"(组件此前从未跑通的原因); + // 统一改用 [Type]::new() 表达式写法 + await powershell(`Add-Type -AssemblyName System.Drawing;$image=[System.Drawing.Image]::FromFile(${psString(input)});$rect=[System.Drawing.Rectangle]::new(${x},${y},${width},${height});$bitmap=[System.Drawing.Bitmap]::new($rect.Width,$rect.Height);$graphics=[System.Drawing.Graphics]::FromImage($bitmap);$graphics.DrawImage($image,[System.Drawing.Rectangle]::new(0,0,$rect.Width,$rect.Height),$rect,[System.Drawing.GraphicsUnit]::Pixel);$bitmap.Save(${psString(output)});$graphics.Dispose();$bitmap.Dispose();$image.Dispose()`); return output; }); register("Image_RelativePosition", async (_ctx, node, args) => {