mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-02-04 14:20:16 +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