GithubHelp home page GithubHelp logo

Comments (1)

Rangi42 avatar Rangi42 commented on May 24, 2024 2

Being more verbose is more informative:

$ ./rgbgfx -vvvvv -Z -o cursor.2bpp cursor.png
rgbgfx v0.6.1-119-g528a4c0b
Options:
	Visit image in column-major order
	Bit depth: 2bpp
	Maximum 8 palettes
	Palettes contain 4 colors
	No palette spec
	Input image slice: 0x0 pixels starting at (0, 0)
	Base tile IDs: [0, 0]
	Maximum 65535 tiles in bank 0, 0 in bank 1
	Input image: cursor.png
	Output tile data: cursor.2bpp
Ready.
Using libpng 1.6.37
Reading tiles...
Opened input file
PNG header signature is OK
Input image: 48x48 pixels, 2bpp palette, not interlaced
rgbgfx: src/gfx/process.cpp:262: Png: Assertion `nbTransparentEntries == nbColors' failed.
Aborted (core dumped)

This is the assertion being violated:

if (png_get_PLTE(png, info, &embeddedPal, &nbColors) != 0) {
	int nbTransparentEntries;
	if (png_get_tRNS(png, info, &transparencyPal, &nbTransparentEntries, nullptr)) {
		assert(nbTransparentEntries == nbColors);
	}

https://www.nayuki.io/page/png-file-chunk-inspector reports this from the chunk data:

  • The IHDR chunk defines color type 3, an indexed palette
  • The PLTE chunk defines 4 colors: #000000, #346856, #88C070, and #E0F8D0.
  • The tRNS chunk defines 1 alpha value: $00

This is valid:

For colour type 3 (indexed-colour), the tRNS chunk contains a series of one-byte alpha values, corresponding to entries in the PLTE chunk. Each entry indicates that pixels of the corresponding palette index shall be treated as having the specified alpha value. Alpha values have the same interpretation as in an 8-bit full alpha channel: 0 is fully transparent, 255 is fully opaque, regardless of image bit depth. The tRNS chunk shall not contain more alpha values than there are palette entries, but a tRNS chunk may contain fewer values than there are palette entries. In this case, the alpha value for all remaining palette entries is assumed to be 255. In the common case in which only palette index 0 need be made transparent, only a one-byte tRNS chunk is needed, and when all palette indices are opaque, the tRNS chunk may be omitted.

from rgbds.

Related Issues (20)

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.