如何从多波段tif文件生成原始文件?

时间:2012-09-05 09:47:58

标签: python python-imaging-library gdal

我尝试打开一个每像素16位和多频段的tif图像,将其转换为原始文件。我正在使用PIL和下一个命令i = Image.open('image.tif')并在我使用rawData = i.tostring()之后。它不适用于多波段tif图像。

错误是:

File "C:\Python27\lib\site-packages\PIL\Image.py", line 1980, in open
    raise IOError("cannot identify image file")
IOError: cannot identify image file

该目录包含该文件。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

GDAL非常擅长打开多波段栅格,支持11 different band types,包括int16。

from osgeo import gdal
import numpy as np

ds = gdal.Open('image.tif')

# loop through each band
for bi in range(ds.RasterCount):
    band = ds.GetRasterBand(bi + 1)
    # Read this band into a 2D NumPy array
    ar = band.ReadAsArray()
    print('Band %d has type %s'%(bi + 1, ar.dtype))
    raw = ar.tostring()