Open AlexGuo1998 opened 2 years ago
Hi, thanks for all this fixes, I have not actually tested it on these types of images.
I'm OK with you about the pixel_len
name. I suggest using the name used in the PNG specification (I don't know it).
I will be happy to accept your PR.
I tried
png-parser
withpal2
/pal4
/rgb48
images:... and they all fail. There are mainly 3 problems.
For all images,
scanline_width
is incorrect, so each scanline read is either too short or too long.https://github.com/Hedroed/png-parser/blob/4d75f17f158acd6e1f86117bde2a0c5bfceede76/pngparser/imagedata.py#L232-L234
Guess it should be like:
i.e. include
bit_per_component
(actuallyself.header.bit_depth
) in calculation.(I suggest renaming
pixel_len
tocomponent_count
, but it's also a little weird: paletted images can have more than 1 component, so maybe a better name?)For
pal2
/pal4
images, it failed to convert index to pixel.https://github.com/Hedroed/png-parser/blob/4d75f17f158acd6e1f86117bde2a0c5bfceede76/pngparser/imagedata.py#L332-L333
The correct way is:
For
rgb48
images, it failed to scale pixel value to 0~255 range when displaying.https://github.com/Hedroed/png-parser/blob/4d75f17f158acd6e1f86117bde2a0c5bfceede76/pngparser/imagedata.py#L337-L341
With
rgb48
,bit_depth
is 16, i.e.val in range(0, 65536)
. Soval
should be divided by 256, or be shifted 8 bits to the right:I can craft a PR for these issues, but I'm not sure about the wording problem. Anyone has an idea?