Skip to main content

Minecraft Skin Preprocessing Tools

Project description

minecraft-skin-preprocessing

A Minecraft skin preprocessing Python script.

Features

  • Convert legacy 64x32 skins to modern 64x64 format.
  • Convert regular (steve) skin to slim (alex) and vice versa.
  • Swap layer2 and layer1 for skins.
  • Swap layer2 and layer1 twice to remove invalid areas.
  • Remove specified layer (1 or 2) for skins.
  • Process skins from Base64-encoded strings.
  • Batch processing of skins in folders.
  • Customizable output folder for converted skins.
  • Option to overwrite existing files.
  • Skin type detection (regular or slim).
  • Pixels and transparency detection in specific regions.

Update

  • 2025-11-11: Add pixel and transparency detection in specific regions.
  • 2025-11-4: refactor code.
  • 2025-11-1: Add support for skin convert between regular and slim (steve and alex).
  • 2025-10-30: Add function for skin type detection (steve or alex).
  • 2025-10-29: Initial release.

Installation

Install the package using pip:

pip install mcskinprep

Usage

Command Line Interface

The package provides a command line interface for easy skin preprocessing.

Arguments

  • input: Input file or folder path (optional).
  • -c, --convert: Convert 64x32 skins to 64x64 format.
  • -i, --input-folder: Specify the input folder containing skins.
  • -o, --output-folder: Specify the output folder for processed skins or output jsonl.
  • -t, --type: Specify the source skin type (steve or alex) for conversion.
  • -s, --swap-layer2-to-layer1: Swap layer2 to layer1 for skins.
  • -ss, --twice-swap-layer2-to-layer1: Swap layer2 and layer1 twice to remove invalid areas.
  • -rm, --remove-layer: Remove specified layer (1 or 2) for skins.
  • -to, --target-type: Convert skin between regular (steve) and slim (alex) types.
  • -b, --base64: Process Base64-encoded skin images.
  • -dp, --detect-properties: Detect properties (skintype, pixels, transparency) , all for detect all properties.
  • -dp_layer, --detect-properties-layer: Layer for detect properties (e.g., 1, 2, 1 2) default is 1.
  • -dp_region, --detect-properties-region: Regions for detect properties (e.g., head, body, right_arm), None for all regions.
  • -dp_base64, --detect-properties-base64: Save detect results in base64 format in jsonl file.
  • --overwrite: Overwrite existing files.
  • -h, --help: Show help message.
  • -v, --version: Show version information.

Examples


New examples

Detect skin type (regular or slim):

mcskinprep old_skin.png -dp skintype

Detect skin layer pixels in layer 1(result save in xx_all_l1_has_pixels.jsonl):

mcskinprep old_skin.png -dp pixels

Detect skin specific region pixels in layer 1 (save in xx_h_l1_has_pixels.jsonl):

mcskinprep old_skin.png -dp pixels -dp_region head  -dp_layer 1

Detect skin layer transparency(save in xx_hra_l1_has_transparency.jsonl):

mcskinprep old_skin.png -dp transparency -dp_region head right_arm -dp_layer 1

Convert format of a single skin (64x32 to 64x64)

mcskinprep -c old_skin.png

Convert all skins in a folder

mcskinprep -c -i skins_folder

Convert with a custom output folder

mcskinprep -c -i old_skins -o new_skins

Convert and overwrite existing files

mcskinprep -c -i skins_folder --overwrite

Swap layer2 and layer1 for a single skin

mcskinprep -s old_skin.png

Swap layer2 and layer1 twice (to remove invalid areas)

mcskinprep -ss old_skin.png

Remove layer2 from a skin

mcskinprep -rm 2 old_skin.png

Convert skin type (steve to alex or vice versa)

mcskinprep -to alex old_skin.png
mcskinprep -to steve old_skin.png

Convert skin from a Base64 string

mcskinprep -c -b base64_skin_string

Python API

The package also provides a Python API for programmatic skin preprocessing.

Examples

usage of core tools

from mcskinprep import MCSkinTools, MCSkinType
from PIL import Image

# Create tools instance
tools = MCSkinTools()

# Load an image
img = Image.open("skin.png")

# Convert 64x32 to 64x64
converted_img = tools.convert_skin_64x32_to_64x64(img)

# Detect skin type
skin_type_detector = MCSkinType()
skin_type = skin_type_detector.auto_detect_skin_type(img)
print(f"Detected skin type: {skin_type}")

# convert skin type (steve to alex or vice versa)
converted_img = tools.convert_skin_type(img, target_type="alex")
# or
converted_img = tools.steve_to_alex(img)

# Swap layers
swapped_img = tools.swap_skin_layer2_to_layer1(img)

# Remove layer
layer_removed_img = tools.remove_layer(img, layer_index=1)

# Save results
converted_img.save("converted_skin.png")

usage of file processor

from mcskinprep import MCSkinFileProcessor

# Create processor instance
processor = MCSkinFileProcessor()

# Convert a single 64x32 skin to 64x64
processor.convert_skin_64x32_to_64x64("old_skin.png", "new_skin.png")

# Swap layers in a skin
processor.swap_skin_layer2_to_layer1("skin.png", "swapped_skin.png")

# Swap layers twice to remove invalid areas
processor.twice_swap_skin_layers("skin.png", "clean_skin.png")

# Remove a specific layer
processor.remove_layer("skin.png", "no_layer1_skin.png", layer_index=1)

# Batch process skins in a folder
processor.batch_convert_folder(
    convert_func=processor.convert_skin_64x32_to_64x64,
    input_folder="input_skins/",
    output_folder="output_skins/",
    overwrite=False
)

# Detect wheather head region in layer 1 has transparent pixels in a folder
batch_detect_folder(
     detect_func=processor.detect_region_transparency, 
     input_folder="input_skins/",
     output_folder="output_skins/",
     regions=["head"],
     layers=[1], 
     overwrite=False
)

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcskinprep-0.3.0.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcskinprep-0.3.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file mcskinprep-0.3.0.tar.gz.

File metadata

  • Download URL: mcskinprep-0.3.0.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.8

File hashes

Hashes for mcskinprep-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d614e12ee089fb6958ff0796b6f28cb21b50d26337a99ee52316d23fff829a28
MD5 22db4360317fe1f470f1c7b971b1f352
BLAKE2b-256 d8cdedd36b3825712f5b3723614075ed1da19b2ccf50f27e2fc7dd3857c9581c

See more details on using hashes here.

File details

Details for the file mcskinprep-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: mcskinprep-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.8

File hashes

Hashes for mcskinprep-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 84e0bde5c4879d3429ce6fec7e97ecf27cb5b751c49b3f19552414a39485b56b
MD5 e01c0f0c8d249a42f831b425ac57d6ad
BLAKE2b-256 37b3e3ccbbc8de83434ed40c5fd1b6480e1ace8d5da445d86df5d522a0ed1f36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page