Skip to main content

ASTC decoder for PIL (just faster)

Project description

bconstanzo: this is a fork of K0lb3's work focused on improving performance by adding some Cython magic (types, which took a bit of effort to get right). Since it completely removes python from the hot loop (and almost all of the decompression function) it achieves some nice speedups (6-8 times faster). Any bottlenecks would then be inside the C++ functions, or your compilers ability to optimize said code.

The main reason I'm making this fork is that iLEAPP had the astc_decomp module as a bottleneck at the time of release, and I worked a couple of weeks into improving it. There may be better alternatives for ASTC decompression out there.

K0lb3's original readme follows:

ASTC_Decomp

An ASTC decoder for PIL.

The decoder uses richgel999/astc_dec to decompress the ASTC blocks.

Installation

  • Cython required

PIP

pip install astc_decomp

Manual

python setup.py install

Usage

Arguments

  • block_width: - Block width, in pixels.
  • block_height: - Block height, in pixels.
  • is_srgb: - If isSRGB is true, the spec requires the decoder to scale the LDR 8-bit endpoints to 16-bit before interpolation slightly differently, which will lead to different outputs. So be sure to set it correctly (ideally it should match whatever the encoder did). (optional arg, default : False)

PIL.Image decoder

from PIL import Image
import astc_decomp 
#needs to be imported once in the active code, so that the codec can register itself

astc_data : bytes
block_width : int
block_height : int
is_srgb : bool = False
img = Image.frombytes('RGBA', size, astc_data, 'astc', (block_width, block_height, is_srgb))

raw decoder

from astc_decomp import decompress_astc

# ASTC to RGBA
rgba_data = decompress_astc(astc_data : bytes, width : int, height : int, block_width : int, block_height : int, is_srgb : bool = False)

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

astc_decomp_faster-1.1.2.tar.gz (167.2 kB view hashes)

Uploaded Source

Built Distributions

astc_decomp_faster-1.1.2-cp312-cp312-win_amd64.whl (86.8 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

astc_decomp_faster-1.1.2-cp311-cp311-win_amd64.whl (86.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

astc_decomp_faster-1.1.2-cp311-cp311-win32.whl (73.6 kB view hashes)

Uploaded CPython 3.11 Windows x86

astc_decomp_faster-1.1.2-cp310-cp310-win_amd64.whl (86.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

astc_decomp_faster-1.1.2-cp310-cp310-win32.whl (74.0 kB view hashes)

Uploaded CPython 3.10 Windows x86

astc_decomp_faster-1.1.2-cp39-cp39-win_amd64.whl (86.7 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

astc_decomp_faster-1.1.2-cp39-cp39-win32.whl (74.7 kB view hashes)

Uploaded CPython 3.9 Windows x86

astc_decomp_faster-1.1.2-cp38-cp38-win_amd64.whl (86.8 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

astc_decomp_faster-1.1.2-cp38-cp38-win32.whl (74.6 kB view hashes)

Uploaded CPython 3.8 Windows x86

astc_decomp_faster-1.1.2-cp37-cp37m-win_amd64.whl (86.8 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

astc_decomp_faster-1.1.2-cp37-cp37m-win32.whl (73.8 kB view hashes)

Uploaded CPython 3.7m Windows x86

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