Skip to main content

a texture decompression C++-extension for Python

Project description

tex2img

PyPI supported Python versions Win/Mac/Linux MIT Build Status

A texture decompression C++-extension for Python.

  1. Installation
  2. Notes
  3. Functions
  4. Sources

Installation

pip install tex2img

or download/clone the git and use

python setup.py install

Notes

  • Crunch isn't supported on Mac OS. (There is no equivalent for malloc_useable size.)
  • decompress_pvrtc seems to have some kind of problem on Mac OS. Mac users might have to use basisu_decompress instead.
  • decompress_etc has a memory leak. The etc unpacking via basisu_decompress works fine tho.

Functions

All functions accept only args and aren't able to handle kwards atm.

basisu_decompress

Decompresses data to RGBA via basisu's unpack_block function.

Args: (compressed data: bytes, width: int, height: int, format: int)

Returns: bytes

Formats:

Format Mode Note
0 cETC1 ETC1
1 cETC1S ETC1(subset:diff colors only, no subblocks)
2 cETC2_RGB ETC2 color block
3 cETC2_RGBA ETC2 alpha block followed by ETC2 color block
4 cETC2_ALPHA ETC2 EAC alpha block
5 cBC1 DXT1
6 cBC3 DXT5(DXT5A block followed by a DXT1 block)
7 cBC4 DXT5A
8 cBC5 3DC / DXN(two DXT5A blocks)
9 cBC7
10 cASTC4x4
11 cPVRTC1_4_RGB
12 cPVRTC1_4_RGBA
13 cATC_RGB
14 cATC_RGBA_INTERPOLATED_ALPHA
15 cFXT1_RGB
16 cPVRTC2_4_RGBA
17 cETC2_R11_EAC
18 cETC2_RG11_EAC

decompress_astc

Decompresses raw astc-compressed data to RGBA.

Args: (compressed data: bytes, image width: int, image height: int, block_width: int, block_height: int, isSRGB: False)

Returns: bytes

decompress_atc

Decompresses raw atc-compressed data to RGB(A).

Args: (compressed data: bytes, width: int, height: int, alpha: bool)

Returns: bytes

alpha = False for ATC_RGB alpha = True for ATC_RGBA

decompress_pvrtc

Decompresses raw pvrtc-compressed data to RGBA.

Args: (compressed data: bytes, width: int, height: int, do2bit_mode: 0)

Returns: bytes

decompress_etc

Decompresses raw etc-compressed data to RGB(A).

Args: (compressed data: bytes, width: int, height: int, format: int)

This function has a memory leak, so it might crash if you use it on too many images at once (~500+). The basisu_decompress function also supports the most common ETC formats, so it is a good alternative.

Formats:

Format Mode
0 ETC1_RGB_NO_MIPMAPS
1 ETC2PACKAGE_RGB_NO_MIPMAPS
2 ETC2PACKAGE_RGBA_NO_MIPMAPS_OLD
3 ETC2PACKAGE_RGBA_NO_MIPMAPS
4 ETC2PACKAGE_RGBA1_NO_MIPMAPS
5 ETC2PACKAGE_R_NO_MIPMAPS
6 ETC2PACKAGE_RG_NO_MIPMAPS
7 ETC2PACKAGE_R_SIGNED_NO_MIPMAPS
8 ETC2PACKAGE_RG_SIGNED_NO_MIPMAPS
9 ETC2PACKAGE_sRGB_NO_MIPMAPS
10 ETC2PACKAGE_sRGBA_NO_MIPMAPS
11 ETC2PACKAGE_sRGBA1_NO_MIPMAPS

crunch_get_texture_info

Retrieves texture information from the CRN file.

Args: (data: bytes)

Returns: dict

crunch_get_level_info

Retrieves mipmap level specific information from the CRN file.

Args: (data: bytes, mipmap_leve: int)

Returns: dict

crunch_unpack_level

Transcodes the specified mipmap level to a destination buffer.

Args: (data: bytes, mipmap_level: int)

Returns: bytes

Sources

ATC & ASTC

The complete BinomialLLC/basis_universal is used and supported. It's default for the ATC and ASTC decompression.

ETC

The whole source of Ericsson/ETCPACK is used for the ETC decompression.

PVRTC

PVRTDecompress.cpp and PVRTDecompress.h of powervr-graphics/Native_SDK are used for the PVRTC decompression.

crunch

A mixed version of BinomialLLC/crunch and Unity-Technologies/crunch is used.

The Unity fork doesn't yield correct results for the original modes, so the BiomialLLC version is used for all modes besides ETC, which was created byUnity.

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

tex2img-0.8.3.tar.gz (1.1 MB view details)

Uploaded Source

File details

Details for the file tex2img-0.8.3.tar.gz.

File metadata

  • Download URL: tex2img-0.8.3.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for tex2img-0.8.3.tar.gz
Algorithm Hash digest
SHA256 494ddc2ae2d400c32eda32ec46a5ad53c6cfb73043ec89f93534a27bf534421c
MD5 d220622f40f1fe477ece4c0131e422d6
BLAKE2b-256 077a6f73d35a7902a6ab1db3c917d62ae98af4663e84aab8e443c4278aee1221

See more details on using hashes here.

Supported by

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