MinecraftSkinHelper 1.0.0

dotnet add package MinecraftSkinHelper --version 1.0.0
                    
NuGet\Install-Package MinecraftSkinHelper -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MinecraftSkinHelper" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MinecraftSkinHelper" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="MinecraftSkinHelper" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MinecraftSkinHelper --version 1.0.0
                    
#r "nuget: MinecraftSkinHelper, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MinecraftSkinHelper@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MinecraftSkinHelper&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=MinecraftSkinHelper&version=1.0.0
                    
Install as a Cake Tool

<div align="center">

🎮 MinecraftSkinHelper

全本地 · 跨平台 · 高性能的 Minecraft 皮肤处理库

NuGet .NET License: MIT Platform

无需网络、无需 API Key,完全本地处理 Minecraft 皮肤文件。
基于 Google SkiaSharp 图形引擎,支持头像裁切、全身渲染、部位提取等全套功能。

</div>


✨ 功能特性

功能 描述
🧑 头部头像 裁切头部(含/不含帽子),任意尺寸输出
🧍 全身正面渲染 合成完整正面人物图,支持外层叠加
🔄 全身背面渲染 合成完整背面人物图
↔️ 正背对比图 左正右背横向拼合一张图
🔵 圆形头像 适用于社交媒体、论坛头像
🟦 圆角头像 适用于 App 图标风格
🎨 带背景头像 自定义背景色填充
🗺️ 部位网格预览 所有部位一览图集
✂️ 单部位提取 精确提取任意一个皮肤部位的原始贴图
🔍 自动检测模型 自动识别 Steve(经典)/ Alex(细手臂)
🔁 旧版皮肤兼容 64×32 老格式自动升级到 64×64
💾 多种输出格式 保存 PNG 文件 / 返回 byte[] / SKBitmap

📦 安装

NuGet 包管理器

dotnet add package MinecraftSkinHelper

.csproj 手动引用

<PackageReference Include="MinecraftSkinHelper" Version="1.0.0" />

跨平台原生依赖(SkiaSharp 会自动按平台选择,通常无需手动添加):

<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.88.7" />
<PackageReference Include="SkiaSharp.NativeAssets.macOS" Version="2.88.7" />
<PackageReference Include="SkiaSharp.NativeAssets.Win32" Version="2.88.7" />

🚀 快速开始

基础用法

using MinecraftSkinHelper;

// 支持文件路径 / byte[] / Stream 三种加载方式
using var helper = new SkinHelper("steve.png");

// 检测模型类型
Console.WriteLine(helper.ModelType); // Classic 或 Slim

// 获取头部头像(含帽子,128px)
using var head = helper.GetHeadAvatar(128, includeHat: true);
SkinHelper.SavePng(head, "avatar.png");

// 全身正面(scale=8 → 128×256 px)
using var front = helper.GetFullBody(RenderFace.Front, scale: 8);
SkinHelper.SavePng(front, "front.png");

// 全身背面
using var back = helper.GetFullBody(RenderFace.Back, scale: 8);
SkinHelper.SavePng(back, "back.png");

// 正背对比拼图
using var compare = helper.GetFrontBackComparison(scale: 8);
SkinHelper.SavePng(compare, "compare.png");

// 输出为字节数组(HTTP 响应 / 数据库存储)
byte[] pngBytes = SkinHelper.ToPngBytes(head);

高级渲染

using MinecraftSkinHelper;
using SkiaSharp;

using var helper = new SkinHelper("alex.png");

// 圆形头像(SNS / 论坛)
using var circle = SkinRenderer.GetRoundAvatar(helper, size: 128);

// 圆角头像(radius 越大越圆)
using var rounded = SkinRenderer.GetRoundedAvatar(helper, size: 128, cornerRadius: 24f);

// 带背景色头像
using var withBg = SkinRenderer.GetAvatarWithBackground(
    helper,
    background: new SKColor(88, 101, 242), // Discord 紫
    size: 128,
    padding: 12
);

// 皮肤所有部位网格预览
using var atlas = SkinRenderer.GetSkinAtlas(helper, scale: 6);
SkinHelper.SavePng(atlas, "atlas.png");

// 像素放大(最近邻,保持像素风格)
using var raw = helper.GetPartRaw(SkinPart.HeadFront);
using var big = SkinRenderer.PixelScale(raw, scale: 16);
SkinHelper.SavePng(big, "head_x16.png");

提取单个部位

using var helper = new SkinHelper("skin.png");

// 提取左臂正面贴图(自动适配 Classic/Slim 宽度)
using var leftArm = helper.GetPartRaw(SkinPart.LeftArmFront);

// 提取头顶
using var headTop = helper.GetPartRaw(SkinPart.HeadTop);

从 Stream / byte[] 加载(适合 Web 场景)

// 从 HTTP 请求体加载
using var helper = new SkinHelper(Request.Body);

// 从数据库 BLOB 加载
byte[] blob = db.GetSkinBytes(userId);
using var helper2 = new SkinHelper(blob);

🖥️ CLI 工具

项目附带 MinecraftSkinHelper.CLI,可直接命令行使用:

# 构建
dotnet build

# 运行(输出到 ./output 目录)
dotnet run --project MinecraftSkinHelper.CLI -- steve.png ./output

输出文件:

output/
├── head_avatar.png        # 64px 头像
├── head_avatar_128.png    # 128px 头像
├── full_front.png         # 全身正面
├── full_back.png          # 全身背面
├── comparison.png         # 正背对比
├── part_HeadFront.png
├── part_HeadBack.png
├── part_HeadLeft.png
├── part_HeadRight.png
├── part_BodyFront.png
├── part_BodyBack.png
├── part_LeftArmFront.png
├── part_RightArmFront.png
├── part_LeftLegFront.png
└── part_RightLegFront.png

📐 皮肤 UV 坐标说明

MinecraftSkinHelper 遵循 Minecraft 标准 64×64 皮肤 UV 布局:

 0        8       16       24       32       40       48       56      64
 ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
0│ HeadTop│HeadBtm │        │        │ HatTop │ HatBtm │        │        │
 ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
8│ HeadL  │ HeadFr │ HeadR  │ HeadBk │ HatL   │ HatFr  │ HatR   │ HatBk  │
 ├──┬─────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴──┬─────┴──┬────┤
16│  │        │        │        │        │        │  LArmC │        │    │
  │LLeg Body  Body    Body     Body     Body    ─────────────────────────│
32│  │  Outer  Outer   Outer    Outer    Outer  │LArmOuter│             │
 ├──┴─────────┴────────┴─────────┴────────┴────────┴─────────────────────┤
48│  LLeg Outer        │         │ LArmOuter  │                          │
 ├──────────────────────┼─────────┼────────────┼──────────────────────────┤
52│  RLeg (Front/Back/L/R + Outer)│ RArm (Front/Back/L/R + Outer)        │
 └──────────────────────┴─────────┴────────────┴──────────────────────────┘

🗂️ 项目结构

MinecraftSkinHelper.sln(或 .slnx)
├── MinecraftSkinHelper/                 ← 类库(Class Library)
│   ├── SkinHelper.cs                    # 核心:加载、检测、裁切、渲染
│   ├── SkinRenderer.cs                  # 高级:圆角/圆形/图集/像素放大
│   └── MinecraftSkinHelper.csproj
│
└── MinecraftSkinHelper.CLI/             ← 命令行工具(Console App)
    ├── Program.cs
    └── MinecraftSkinHelper.CLI.csproj

📖 API 参考

SkinHelper

方法 / 属性 说明
new SkinHelper(string path) 从文件路径加载
new SkinHelper(byte[] data) 从字节数组加载
new SkinHelper(Stream stream) 从流加载
ModelType Classic 或 Slim
SkinWidth / SkinHeight 皮肤原始尺寸
GetHeadAvatar(int size, bool includeHat) 头部头像
GetFullBody(RenderFace, int scale, bool includeOuter) 全身渲染
GetFrontBackComparison(int scale, bool includeOuter) 正背对比图
GetPartRaw(SkinPart part) 原始部位贴图
static SavePng(SKBitmap, string path) 保存为 PNG
static ToPngBytes(SKBitmap) 转为 PNG 字节数组

SkinRenderer(静态)

方法 说明
GetRoundAvatar(helper, size) 圆形头像
GetRoundedAvatar(helper, size, cornerRadius) 圆角头像
GetAvatarWithBackground(helper, color, size, padding) 带背景色头像
GetSkinAtlas(helper, scale) 部位网格预览
PixelScale(bitmap, scale) 像素最近邻放大

SkinPart 枚举

HeadFront  HeadBack  HeadLeft  HeadRight  HeadTop  HeadBottom
HatFront   HatBack
BodyFront  BodyBack  BodyLeft  BodyRight
LeftArmFront  LeftArmBack  RightArmFront  RightArmBack
LeftLegFront  LeftLegBack  RightLegFront  RightLegBack

⚡ 性能说明

  • 基于 Google Skia 原生图形引擎(SkiaSharp),无托管 GDI/WPF 依赖
  • 所有操作完全内存内完成,无临时文件 I/O
  • 使用 FilterQuality.None(最近邻插值),像素艺术风格锐利无模糊
  • 实现 IDisposable,图像资源明确释放,无内存泄漏
  • 支持多线程并发(每个 SkinHelper 实例独立,无共享状态)

🔧 环境要求

项目 要求
.NET 10.0 或更高
SkiaSharp 2.88.7+
操作系统 Windows / Linux / macOS
架构 x64 / ARM64

📄 License

MIT © 2026

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 124 2/21/2026