mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-01-26 01:30:29 +01:00
Other things : Add a script to generate skin previews
This commit is contained in:
parent
39895c63ba
commit
bb92aceb99
99
other_things/scripts/Mods/generate_skin_previews.py
Executable file
99
other_things/scripts/Mods/generate_skin_previews.py
Executable file
@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- encoding: utf-8 -*-
|
||||
##########################
|
||||
## Skin Preview Generator
|
||||
## ßÿ Mg / LeMagnesium
|
||||
## License : WTFPL
|
||||
##
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
|
||||
from PIL import Image
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
try:
|
||||
open(arg)
|
||||
except Exception as err:
|
||||
print("Couldn't open {} : {}".format(os.path.basename(arg), err))
|
||||
continue
|
||||
|
||||
im = Image.open(arg).convert("RGBA")
|
||||
print("Opened {}".format(os.path.basename(arg)))
|
||||
|
||||
s = im.size
|
||||
if not s[0] == s[1] * 2:
|
||||
print("Invalid size : {}".format(s))
|
||||
continue
|
||||
|
||||
cw = int(s[0] / 8)
|
||||
|
||||
# backp = Image.new("RGBA", (cw * 2, cw * 4))
|
||||
|
||||
head = im.crop(box = (cw, cw, cw * 2, cw * 2))
|
||||
chest = im.crop(box = (
|
||||
cw * 2 + int(1/2.0 * cw),
|
||||
cw * 2 + int(1/2.0 * cw),
|
||||
cw * 3 + int(1/2.0 * cw),
|
||||
s[1],
|
||||
))
|
||||
leftarm = im.crop(box = (
|
||||
5 * cw + int(cw / 2),
|
||||
2 * cw + int(cw / 2),
|
||||
6 * cw,
|
||||
s[1]
|
||||
))
|
||||
rightarm = im.crop(box = (
|
||||
6 * cw,
|
||||
2 * cw + int(cw / 2),
|
||||
6 * cw + int(cw / 2),
|
||||
s[1]
|
||||
))
|
||||
leftleg = im.crop(box = (
|
||||
int(1/2 * cw),
|
||||
2 * cw + int(cw / 2),
|
||||
cw,
|
||||
s[1]
|
||||
))
|
||||
|
||||
# Paste
|
||||
front = Image.new("RGBA", (
|
||||
cw * 2, # + int(2/8.0 * cw),
|
||||
cw * 4
|
||||
))
|
||||
for y in range(front.size[0]):
|
||||
for x in range(front.size[1]):
|
||||
front.putpixel((y, x), (255, 255, 255, 0))
|
||||
|
||||
front.paste(head, box = (
|
||||
int(cw / 2),
|
||||
0,
|
||||
))
|
||||
|
||||
front.paste(chest, box = (
|
||||
int(cw / 2),
|
||||
cw
|
||||
))
|
||||
|
||||
front.paste(leftarm, box = (
|
||||
0,
|
||||
cw
|
||||
))
|
||||
|
||||
front.paste(leftarm, box = (
|
||||
int(1.5 * cw),
|
||||
cw
|
||||
))
|
||||
|
||||
front.paste(leftleg, box = (
|
||||
int(cw / 2),
|
||||
int(2.5 * cw)
|
||||
))
|
||||
|
||||
front.paste(leftleg, box = (
|
||||
cw,
|
||||
int(2.5 * cw)
|
||||
))
|
||||
|
||||
exts = os.path.splitext(arg)
|
||||
front.save("{}_preview{}".format(exts[0], "".join(exts[1:])))
|
Loading…
Reference in New Issue
Block a user