/img2gb

Converts images to GameBoy tiles

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

img2gb - Converts Images to GameBoy Tileset and Tilemap

GitHub Lint and Tests PYPI Version License Discord Black

img2gb generates GameBoy Tilesets and Tilemaps from standard image (PNG, JPEG,...). It converts the images into the GameBoy image format and generates C code (.c and .h files) that can be used in GameBoy projects.

./doc/_static/banner.png

Dependencies

  • Python >= 3.9
  • Pillow >= 5.0

Install

Usage

Hacking

Setup

To work on img2gb first create a virtualenv:

python3 -m venv __env__

and activate it:

source __env__/bin/activate

Then install the project with all dev dependencies:

pip install -e .[dev]

Commands

You can lint the code and check coding style with:

nox -s lint

You can fix coding style using Black with:

nox -s black_fix

You can run test on all supported Python versions or on a specific Python version with:

nox -s test       # Run on all Python version

nox -s test-3.9   # Run on Python 3.9
nox -s test-3.10  # Run on Python 3.10
nox -s test-3.11  # Run on Python 3.11
nox -s test-3.12  # Run on Python 3.12
nox -s test-3.12  # Run on Python 3.13

And you can build the documentation with (result in build/html/):

nox -s gendoc

Links

Support this project

Want to support this project?

Changelog

  • [NEXT] (changes on master, but not released yet):
    • Nothing yet ;)
  • v1.3.0:
    • feat: Added binary export of tilesets and tilemaps (@duysqubix, #44)
    • misc: Added Python 3.13 support (@flozz)
    • misc!: Removed Python 3.8 support (@flozz)
  • v1.2.0:
    • fix: Fixed wrong version displayed (@flozz, #3)
    • chore: Added Python 3.11 and 3.12 support
    • chore!: Removed Python 2.7 and 3.7 support
  • v1.1.0:
    • Removes arbitrary size limit for tilmaps
    • Implements offset option (#2)
  • v1.0.0:
    • Refacto of the Python API, with new high-level fuction to be easier to use
    • Refacto of the CLI: now tileset and tilemap are generated separately, this allow more options for both and covers more usecases.
    • New option to handle alternative palette
    • New option to handle 8x16px sprites
    • Documentation
    • Unit test (everything is not coverd but it is better than nothing :))
  • v0.10.0: Adds non-RGB image support (indexed images,...)
  • v0.9.1: Fixes an issue with Python 3
  • v0.9.0: Initial release (generates tiles, tilesets and tilemaps)