summaryrefslogtreecommitdiff
path: root/applications
diff options
context:
space:
mode:
authorPedro Gimeno <parigalo@formauri.es>2015-09-16 20:28:29 +0200
committerMathieu Malaterre <mathieu.malaterre@gmail.com>2015-09-16 20:28:29 +0200
commit4469a98cd74b7f39471f84bb99445f9bdba385e6 (patch)
treec4229af21ad2b33ea4761bfc32c71f1f5defa70c /applications
parent93c79f8fb1a19c3f253081df7fc9b17604483e5a (diff)
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.
Diffstat (limited to 'applications')
-rw-r--r--applications/codec/convert.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/applications/codec/convert.c b/applications/codec/convert.c
index 082aa2cb..f1ac4791 100644
--- a/applications/codec/convert.c
+++ b/applications/codec/convert.c
@@ -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;