Skip to main content
 首页 » 编程设计

java之如何在 python 或 java 中将 geotiff 转换为 jpg

2025年05月04日29telwanggs

我有一个 geotiff 图像,有 3 个波段。

band1,2 是实际图像值,band3 是实例角度值。

band1,2是float32数据类型

下面的代码是我之前试过的

但它不起作用。

我认为波段数据的范围太大,所以没有

from osgeo import gdal, osr, ogr 
from PIL import Image 
import numpy as np 
 
 
ds = gdal.Open('image path', gdal.GA_ReadOnly) 
rb = ds.GetRasterBand(1) 
test = rb.ReadAsArray() 
rb2 = ds.GetRasterBand(2) 
test2 = rb2.ReadAsArray() 
rb3 = ds.GetRasterBand(3) 
test3 = rb3.ReadAsArray() 
slice56 = test2 
formatted = (slice56 * 255 / np.max(slice56)).astype('uint8') 
img = Image.fromarray(formatted) 
img.save('save image path') 

我该如何解决这个问题??

请您参考如下方法:

为此,您可以使用 gdal.Translate。

您可以阅读文档 here

from osgeo import gdal 
     
options_list = [ 
    '-ot Byte', 
    '-of JPEG', 
    '-b 1', 
    '-scale' 
]            
 
options_string = " ".join(options_list) 
     
gdal.Translate( 
    'save_image_path.jpg', 
    'image_path.tif', 
    options=options_string 
) 

上面的代码只是创建了一个 jpg 文件,其中 band 1 被缩放到字节范围内。您可以通过添加 '-b 2' 等来添加更多波段。另请注意,scale 会自动将整个范围包装到字节范围内。如果您喜欢其他东西,您可以使用 '-scale min_val max_val' 来指定您喜欢的范围,因为通常您不需要可用的最低值或最高值。