Giter Club home page Giter Club logo

tex2img's Introduction

tex2img

PyPI supported Python versions Win/Mac/Linux MIT Build Status (Github) Build Status (Travis)

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

  • etcpack causes a segfault on linux systems, so linux systems will use basisu under the hood for etc instead

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.

tex2img's People

Contributors

k0lb3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tex2img's Issues

Failed to Build

Hello, I am having trouble building this module

Information of my environment:

OS: Windows 7 64bit SP1
Python Version: 3.8.5
PIP Version: 20.3.3
Microsoft Visual C++ Version: 15.0

Error log:

    running install
    running build
    running build_ext
    building 'tex2img' extension
    creating build
    creating build\temp.win32-3.8
    creating build\temp.win32-3.8\Release
    creating build\temp.win32-3.8\Release\src
    creating build\temp.win32-3.8\Release\src\basisu
    creating build\temp.win32-3.8\Release\src\basisu\transcoder
    creating build\temp.win32-3.8\Release\src\etcpack
    creating build\temp.win32-3.8\Release\src\pvrtc_decoder
    E:\Microsoft Visual Studio\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Id:\python\include -Id:\python\include "-IE:\Microsoft Visual Studio\VC\Tools\MSVC\14.28.29333\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" /EHsc /Tpsrc\main.cpp /Fobuild\temp.win32-3.8\Release\src\main.obj -std=c++11
    cl : Command line warning D9002 : ignoring unknown option '-std=c++11'
    main.cpp
    C:\Users\User\AppData\Local\Temp\pip-install-e30erjpj\tex2img_836879c5d2fc4641b8a8f99a7ea1cd78\src\basisu\basisu_enc.h(689): error C3861: 'tolower': identifier not found
    src\main.cpp(58): warning C4018: '>=': signed/unsigned mismatch
    src\main.cpp(77): warning C4018: '<': signed/unsigned mismatch
    src\main.cpp(78): warning C4018: '<': signed/unsigned mismatch
    src\main.cpp(114): warning C4018: '>=': signed/unsigned mismatch
    src\main.cpp(119): warning C4018: '>=': signed/unsigned mismatch
    error: command 'E:\\Microsoft Visual Studio\\VC\\Tools\\MSVC\\14.28.29333\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2

Step to reproduce:

  1. Open Command Prompt
  2. Type pip install tex2img

Throw exception instead of silent fail

printf("failed decoding");

On the above referenced line, this would be better to throw an exception like raise ValueError('Failed decoding') instead of printf(). This helps anyone using the library in detecting errors. If you anticipate that users may need the script to still move on and continue processing, perhaps add a boolean argument to the function like ignore_errors=False

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.