Opened 8 years ago
Closed 8 years ago
#2512 closed defect (fixed)
r.out.gdal wrongly messes with SetColorInterpretation
|Reported by:||rouault||Owned by:|
r.out.gdal export_band.c currently contains
CPLPushErrorHandler(CPLQuietErrorHandler); GDALSetRasterColorInterpretation(hBand, GPI_RGB); CPLPopErrorHandler();
This is a wrong usage of the GDAL API. GDALSetRasterColorInterpretation() expects an enumerated value from the GDALColorInterp enumeration, whereas GPI_RGB is a value from the GDALPaletteInterp enumeration. Consequently, due to the fact that GPI_RGB = 1 and GCI_GrayIndex=1, the above snippet will effectively force the color interpreation to be Gray level.
On GeoTIFF this was without effect before GDAL 1.11, since in those versions, SetColorInterpration() in the GeoTIFF driver has no effect. But in GDAL 1.11, the SetColorInterpration() in the GeoTIFF driver can modify the default PHOTOMETRIC TIFF tag. For example, for a 3 band GeoTIFF file, at creation time, the GeoTIFF driver defaults to PHOTOMETRIC=RGB, but if later, SetRasterColorInterpretation(GCI_GrayIndex) is called, it will undo that setting to fallback to PHOTOMETRIC=MINISBLACK.
All in all, I suggest just to remove those 3 lines. The CPLPushErrorHandler(CPLQuietErrorHandler) / CPLPopErrorHandler() surrounding is a hint that this call is wrong.
Change History (6)
by , 8 years ago
comment:1 by , 8 years ago
comment:2 by , 8 years ago
comment:3 by , 8 years ago
Done in 6.4.svn (relbranch64) in r63688.
comment:4 by , 8 years ago
Thanks Markus !
comment:5 by , 8 years ago
|Status:||new → closed|
Replying to rouault:
Done in r63682,3 (trunk, relbr70).