Python spine atlas parsing
Project description
SpineAtlas
Modify atlas data and export frames or convert other atlas-like data to spine atlas
Installation
Install the latest version of SpineAtlas from PyPI:
pip install SpineAtlas
Usage
Opening and saving atlas
from SpineAtlas import ReadAtlasFile
atlas = ReadAtlasFile('1.atlas')
# The code will automatically determine the format of Atlas
atlas.version = False # Convert to Atlas 3.0 format
atlas.version = True # Convert to Atlas 4.0 format
atlas.SaveAtlas('1_v4.atlas')
Check if the atlas is missing a textures
from SpineAtlas import ReadAtlasFile
atlas = ReadAtlasFile('1.atlas')
# If the texture and atlas are in the same directory, you don't need to pass the path
miss = atlas.CheckTextures()
# If `miss` is empty, it means there is no missing textures
Modify the texture scaling of the atlas
from SpineAtlas import ReadAtlasFile
atlas = ReadAtlasFile('1.atlas')
# If the texture and atlas are in the same directory, you don't need to pass the path
atlas.ReScale()
atlas.SaveAtlas('1_scale.atlas')
Export atlas frames
from SpineAtlas import ReadAtlasFile
atlas = ReadAtlasFile('1.atlas')
# If the texture and atlas are in the same directory, you don't need to pass the texture path
# mode : ['Normal', 'Premul', 'NonPremul']
# --- Normal - do not process the texture
# --- Premul - convert the texture to premultiplied
# --- NonPremul - convert the texture to non-premultiplied
atlas.SaveFrames(path='1_frames', mode='Premul')
Convert other formats to Spine Atlas
from SpineAtlas import Atlas, AtlasTex, AtlasFrame
'''
{
Texture:
Texture_Name: str
Texture_Wdith: int
Texture_Height: int
Frame:
[
[
Frame_Name: str
Cut_X: int
Cut_Y: int
Cut_Wdith: int
Cut_Height: int
Original_X: int
Original_Y: int
Original_Wdith: int
Original_Height: int
Rotate: int
],
...
]
}
'''
TextureDict = {...}
frames = []
for i in TextureDict['Frame']:
frames.append(AtlasFrame(i['Frame_Name'], i['Cut_X'], i['Cut_Y'], i['Cut_Wdith'], i['Cut_Height'], i['Original_X'], i['Original_Y'], i['Original_Wdith'], i['Original_Height'], i['Rotate']))
tex = TextureDict['Texture']
texture = AtlasTex(tex['Texture_Name'], tex['Texture_Wdith'], tex['Texture_Height'], frames=frames)
atlas = Atlas([texture])
atlas.SaveAtlas('1.atlas')
Recalculate the clipping anchor point
from SpineAtlas import ReadAtlasFile, Anchor
'''
class Anchor(IntEnum):
TOP_LEFT = 1
TOP_CENTER = 2
TOP_RIGHT = 3
CENTER_LEFT = 4
CENTER = 5
CENTER_RIGHT = 6
BOTTOM_LEFT = 7
BOTTOM_CENTER = 8
BOTTOM_RIGHT = 9
'''
atlas = ReadAtlasFile('1.atlas')
# The default anchor point for Spine Atlas clipping is the top left corner
atlas.cutp = Anchor.BOTTOM_LEFT
atlas.ReOffset() # Recalculate clipping X/Y starting from the upper left corner
atlas.SaveAtlas('1_1_ReOffset.atlas')
Recalculate the Offset anchor point
from SpineAtlas import ReadAtlasFile, Anchor
'''
class Anchor(IntEnum):
TOP_LEFT = 1
TOP_CENTER = 2
TOP_RIGHT = 3
CENTER_LEFT = 4
CENTER = 5
CENTER_RIGHT = 6
BOTTOM_LEFT = 7
BOTTOM_CENTER = 8
BOTTOM_RIGHT = 9
'''
atlas = ReadAtlasFile('1.atlas')
# The default anchor point for Spine Atlas Offset is the bottom left corner
atlas.offp = Anchor.TOP_LEFT
atlas.ReOffset() # Recalculate Offset X/Y starting from the bottom left corner
atlas.SaveAtlas('1_1_ReOffset.atlas')
Convert image to premultiplied/non-premultiplied
from PIL.Image import open as imgop
from SpineAtlas import ImgPremultiplied, ImgNonPremultiplied
img = imgop('1.png')
tex = ImgPremultiplied(img)
tex.save('1_premultiplied.png')
tex = ImgNonPremultiplied(img)
tex.save('1_non-premultiplied.png')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
spineatlas-1.0.7.tar.gz
(9.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spineatlas-1.0.7.tar.gz.
File metadata
- Download URL: spineatlas-1.0.7.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01fdd98f3f7a2e0e76fa7cbbb4067f9c873acc8f95bc391d20e2fa035b3cefba
|
|
| MD5 |
79935df232c70e25fabc68c568475522
|
|
| BLAKE2b-256 |
8f75f552d0441d90574e13ad6eabd5693896ac9ce8103526877ea9d15c5f0ab8
|
File details
Details for the file spineatlas-1.0.7-py3-none-any.whl.
File metadata
- Download URL: spineatlas-1.0.7-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b81245bdbbe15ff67953f69d0b5317efbb1a97febe35b116484a86590cdbe569
|
|
| MD5 |
5c70a26a931f61cb79d6a270fadaebb1
|
|
| BLAKE2b-256 |
fa7c161b7dd3302531a8f75087756a143df21cc6e5f485cbb6a9e212f8dda98d
|