【问题标题】:Converting a 16bit GeoTiff file as an 8bit JPEG file using python使用 python 将 16 位 GeoTiff 文件转换为 8 位 JPEG 文件
【发布时间】:2018-04-19 02:37:13
【问题描述】:

我正在尝试将 16 位 3 波段 RGB GeoTIFF 文件转换为 8 位 3 波段 JPEG 文件。看起来gdal 库应该可以很好地解决这个问题。 我的问题是如何在 python gdal API 中指定转换为 8 位输出,以及如何缩放该转换中的值?另外,如何判断输出是 8 位还是 16 位?

gdal.Translate() 函数应该可以达到目的。但是,我发现将值重新缩放为 8 位的唯一示例涉及 C 接口。下面的两篇文章提供了这方面的示例,但它们也不适合我的目的,因为它们没有使用 Python 接口。

https://gis.stackexchange.com/questions/26249/how-to-convert-qgis-generated-tiff-images-into-jpg-jpeg-using-gdal-command-line/26252

https://gis.stackexchange.com/questions/206537/geotiff-to-16-bit-tiff-png-or-bmp-image-for-heightmap/206786

我想出的python代码是:

from osgeo import gdal
gdal.Translate(destName='test.jpg', srcDS='test.tif')

这会起作用,但我不认为输出被转换为 8 位或值被重新调整。有谁知道如何应用这些特定设置?

请注意,下面的这篇文章非常相似,但使用了PIL 包。然而问题是PIL 显然无法摄取 16 位图像。当我尝试此代码时,我收到有关读取数据的错误。因此,我无法使用此解决方案。

converting tiff to jpeg in python

【问题讨论】:

    标签: python geospatial gdal


    【解决方案1】:

    你可以像这样使用选项

    from osgeo import gdal
    
    scale = '-scale min_val max_val'
    options_list = [
        '-ot Byte',
        '-of JPEG',
        scale
    ] 
    options_string = " ".join(options_list)
    
    gdal.Translate('test.jpg',
                   'test.tif',
                   options=options_string)
    

    选择您认为适合您的图像的最小值和最大值为min_valmax_val

    如果你想将缩放扩展到整个范围,你可以简单地跳过最小值和最大值,直接使用scale = '-scale'

    【讨论】:

    • 好的,很好。所以这将让我将适当的设置发送到gdal.Translate() 函数。谢谢你的帮助。我对如何传递这些参数感到困惑。
    【解决方案2】:

    我认为gdal的方式是使用gdal.TranslateOptions()

    from osgeo import gdal
    
    translate_options = gdal.TranslateOptions(format='JPEG',
                                              outputType=gdal.GDT_Byte,
                                              scaleParams=[''],
                                              # scaleParams=[min_val, max_val],
                                              )
    
    gdal.Translate(destName='test.jpg', srcDS='test.tif', options=translate_options)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 2014-08-18
      • 2012-06-12
      • 2012-10-11
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多