如何在 python 或 java 中将 geotiff 转换为 jpg?
how to convert geotiff to jpg in python or java?
我有一个 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'
来指定您喜欢的范围,因为通常您不需要可用的最低值或最高值。
除了 JPEG 分辨率不是很好之外,以上内容对我来说效果很好。将 JPEG 转换为 PNG 效果更好。
我有一个 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'
来指定您喜欢的范围,因为通常您不需要可用的最低值或最高值。
除了 JPEG 分辨率不是很好之外,以上内容对我来说效果很好。将 JPEG 转换为 PNG 效果更好。