better invert of gray signed int tiffs

This commit is contained in:
John Cupitt 2019-08-04 03:55:39 +01:00
parent 2841504fa0
commit 64d42be091
1 changed files with 7 additions and 4 deletions

View File

@ -937,19 +937,22 @@ rtiff_greyscale_line( Rtiff *rtiff,
int samples_per_pixel = rtiff->header.samples_per_pixel; int samples_per_pixel = rtiff->header.samples_per_pixel;
int photometric_interpretation = int photometric_interpretation =
rtiff->header.photometric_interpretation; rtiff->header.photometric_interpretation;
gboolean invert = photometric_interpretation == PHOTOMETRIC_MINISWHITE;
VipsBandFormat format = rtiff_guess_format( rtiff ); VipsBandFormat format = rtiff_guess_format( rtiff );
gboolean invert = photometric_interpretation == PHOTOMETRIC_MINISWHITE;
int x, i; int x, i;
switch( format ) { switch( format ) {
case VIPS_FORMAT_UCHAR:
case VIPS_FORMAT_CHAR: case VIPS_FORMAT_CHAR:
GREY_LOOP( guchar, 0 );
break;
case VIPS_FORMAT_UCHAR:
GREY_LOOP( guchar, UCHAR_MAX ); GREY_LOOP( guchar, UCHAR_MAX );
break; break;
case VIPS_FORMAT_SHORT: case VIPS_FORMAT_SHORT:
GREY_LOOP( gshort, SHRT_MAX ); GREY_LOOP( gshort, 0 );
break; break;
case VIPS_FORMAT_USHORT: case VIPS_FORMAT_USHORT:
@ -957,7 +960,7 @@ rtiff_greyscale_line( Rtiff *rtiff,
break; break;
case VIPS_FORMAT_INT: case VIPS_FORMAT_INT:
GREY_LOOP( gint, INT_MAX ); GREY_LOOP( gint, 0 );
break; break;
case VIPS_FORMAT_UINT: case VIPS_FORMAT_UINT: