You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改现有PowerShell代码实现bmp、jpg等图片按坐标切片并保存各分片

PowerShell 图片切片工具调整方案

以下是适配批量切片需求的完整可运行代码,支持bmp、jpg、png等常用格式导入导出,可自定义多个切片坐标:

Add-Type -AssemblyName System.Drawing

# --------------- 可配置参数开始 ---------------
# 原图片路径,支持bmp/jpg/jpeg/png等常见格式
$sourceImagePath = "C:\tmp\dolphin.jpg"
# 切片输出文件夹,不存在会自动创建
$outputDir = "C:\tmp\slices"
# 切片配置:每组参数为 【源图起始X, 源图起始Y, 切片宽度, 切片高度, 输出文件名】
$sliceConfigs = @(
    @(0, 0, 64, 64, "slice_0_0.jpg"),
    @(0, 64, 64, 64, "slice_0_64.png"),
    @(64, 0, 64, 64, "slice_64_0.bmp")
    # 需更多切片继续按上面格式添加即可
)
# --------------- 可配置参数结束 ---------------

# 初始化输出目录
if (-not (Test-Path $outputDir)) {
    New-Item -ItemType Directory -Path $outputDir | Out-Null
}

# 加载源图片
$srcImage = [System.Drawing.Image]::FromFile((Resolve-Path $sourceImagePath).Path)
$graphicsUnit = [System.Drawing.GraphicsUnit]::Pixel

foreach ($slice in $sliceConfigs) {
    $srcX = $slice[0]
    $srcY = $slice[1]
    $width = $slice[2]
    $height = $slice[3]
    $outputName = $slice[4]
    $outputFullPath = Join-Path $outputDir $outputName

    # 定义源图截取区域
    $srcRect = [System.Drawing.Rectangle]::new($srcX, $srcY, $width, $height)
    # 创建对应尺寸的空白位图
    $outputBmp = [System.Drawing.Bitmap]::new($width, $height)
    # 绘制切片
    $graphics = [System.Drawing.Graphics]::FromImage($outputBmp)
    $graphics.DrawImage($srcImage, [System.Drawing.Rectangle]::new(0,0,$width,$height), $srcRect, $graphicsUnit)
    
    # 自动识别输出格式
    $ext = [System.IO.Path]::GetExtension($outputName).ToLower()
    $imageFormat = switch ($ext) {
        ".jpg" { [System.Drawing.Imaging.ImageFormat]::Jpeg }
        ".jpeg" { [System.Drawing.Imaging.ImageFormat]::Jpeg }
        ".png" { [System.Drawing.Imaging.ImageFormat]::Png }
        ".bmp" { [System.Drawing.Imaging.ImageFormat]::Bmp }
        default { [System.Drawing.Imaging.ImageFormat]::Png }
    }

    # 保存切片
    $outputBmp.Save($outputFullPath, $imageFormat)

    # 释放本次切片资源
    $graphics.Dispose()
    $outputBmp.Dispose()
}

# 释放源图片资源
$srcImage.Dispose()

使用说明

  • 先修改可配置参数开始和可配置参数结束之间的内容,匹配你自己的图片路径、输出路径和切片需求
  • 切片配置的坐标以源图片左上角为原点,X轴向右递增,Y轴向下递增,所有尺寸单位均为像素
  • 输出文件名的后缀可以指定为jpg/png/bmp,代码会自动适配对应格式导出
  • 如果需要按固定步长批量切分整图,可以把$sliceConfigs的手动配置替换为自动生成逻辑,以下是按32x32尺寸均匀切分的示例:
# 按32x32尺寸均匀切分整图的切片配置自动生成示例,替换掉原手动$sliceConfigs配置段即可
$sliceSize = 32
$sliceConfigs = @()
for ($x = 0; $x -lt $srcImage.Width; $x += $sliceSize) {
    for ($y = 0; $y -lt $srcImage.Height; $y += $sliceSize) {
        $sliceWidth = [Math]::Min($sliceSize, $srcImage.Width - $x)
        $sliceHeight = [Math]::Min($sliceSize, $srcImage.Height - $y)
        $sliceConfigs += ,@($x, $y, $sliceWidth, $sliceHeight, "slice_${x}_${y}.png")
    }
}

注意事项

  • 运行前确保系统已安装.NET Framework,Win10/Win11默认自带
  • 不要在源图片被其他程序占用时运行脚本,否则会加载失败
  • 切片尺寸不要超过源图片的宽高范围,超出部分会自动补透明像素(png格式)或者黑色像素(jpg/bmp格式)

内容的提问来源于stack exchange,提问作者likwid786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:42:02