Wrong TGA header generated by j2k_to_image

The TGA file writer used by j2k_to_image writes a wrong field to the
header for alpha-less images.

To reproduce:
1. Take any 24-bit j2k image with no alpha.
2. Convert it to TGA with j2k_to_image -i <image>.j2k -o <image>.tga
3. Open <image>.tga with Gimp.

When opened, the image will have a wrong alpha channel, because Gimp
uses a certain field in the header to determine if the image has alpha.
That field is saved wrongly by j2k_to_image for alpha-less images. Per
the TGA specification, Gimp is correct in this case.
This commit is contained in:
Pedro Gimeno 2015-09-16 20:28:29 +02:00 committed by Mathieu Malaterre
parent 93c79f8fb1
commit 4469a98cd7
1 changed files with 4 additions and 1 deletions

View File

@ -243,7 +243,10 @@ static int tga_writeheader(FILE *fp, int bits_per_pixel, int width, int height,
if(fwrite(&pixel_depth, 1, 1, fp) != 1) goto fails;
image_desc = 8; /* 8 bits per component. */
image_desc = // bits 0-3 are # of alpha bits per pixel
bits_per_pixel == 16 ? 1 :
bits_per_pixel == 32 ? 8 :
0;
if (flip_image)
image_desc |= 32;