try to handle tiffs with 8-bit colormaps
see https://github.com/jcupitt/libvips/issues/220
This commit is contained in:
parent
c805b382fe
commit
f1d901a229
@ -9,6 +9,7 @@
|
|||||||
- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help
|
- renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help
|
||||||
bindings
|
bindings
|
||||||
- vipsthumbnail will return an error code if one or more conversions failed
|
- vipsthumbnail will return an error code if one or more conversions failed
|
||||||
|
- try to handle tiffs with old-style 8-bit colormaps
|
||||||
|
|
||||||
24/12/14 started 7.42.1
|
24/12/14 started 7.42.1
|
||||||
- add gobject-2.0 to Requires: in vips and vips-cpp .pc files
|
- add gobject-2.0 to Requires: in vips and vips-cpp .pc files
|
||||||
|
@ -152,6 +152,8 @@
|
|||||||
* - better istiff detector spots bigtiff
|
* - better istiff detector spots bigtiff
|
||||||
* 3/12/14
|
* 3/12/14
|
||||||
* - read any XMP metadata
|
* - read any XMP metadata
|
||||||
|
* 19/1/15
|
||||||
|
* - try to handle 8-bit colormaps
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -853,10 +855,31 @@ parse_palette( ReadTiff *rtiff, VipsImage *out )
|
|||||||
vips_error( "tiff2vips", "%s", _( "bad colormap" ) );
|
vips_error( "tiff2vips", "%s", _( "bad colormap" ) );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
for( i = 0; i < len; i++ ) {
|
|
||||||
read->red8[i] = read->red16[i] >> 8;
|
/* Old-style colourmaps were 8-bit. If all the top bytes are zero,
|
||||||
read->green8[i] = read->green16[i] >> 8;
|
* assume we have one of these.
|
||||||
read->blue8[i] = read->blue16[i] >> 8;
|
*
|
||||||
|
* See: https://github.com/jcupitt/libvips/issues/220
|
||||||
|
*/
|
||||||
|
for( i = 0; i < len; i++ )
|
||||||
|
if( (read->red16[i] >> 8) |
|
||||||
|
(read->green16[i] >> 8) |
|
||||||
|
(read->blue16[i] >> 8) )
|
||||||
|
break;
|
||||||
|
if( i < len )
|
||||||
|
for( i = 0; i < len; i++ ) {
|
||||||
|
read->red8[i] = read->red16[i] >> 8;
|
||||||
|
read->green8[i] = read->green16[i] >> 8;
|
||||||
|
read->blue8[i] = read->blue16[i] >> 8;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
vips_warn( "tiff2vips", "%s", _( "assuming 8-bit palette" ) );
|
||||||
|
|
||||||
|
for( i = 0; i < len; i++ ) {
|
||||||
|
read->red8[i] = read->red16[i] & 0xff;
|
||||||
|
read->green8[i] = read->green16[i] & 0xff;
|
||||||
|
read->blue8[i] = read->blue16[i] & 0xff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Are all the maps equal? We have a mono image.
|
/* Are all the maps equal? We have a mono image.
|
||||||
|
Loading…
Reference in New Issue
Block a user