python TIF转PNG的两种方式

方式1:

from osgeo import gdal
file_path=r"D:\TIF\1.tif"
ds=gdal.Open(file_path)
driver=gdal.GetDriverByName('PNG')
dst_ds = driver.CreateCopy(r'D:\PNG\1.png', ds)

方式2:(路径中不能有中文)

from libtiff import TIFF
import cv2

tif = TIFF.open(r"dataset\TIF\1.tif", mode='r')
img = tif.read_image()
"""
interpolation:指定插值的方式,图像resize之后,像素要重新计算,靠这个参数来指定重新计算像素的方式,有以下几种:
      INTER_NEAREST - 最邻近插值
      INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
      INTER_AREA -区域插值
      INTER_CUBIC - 4x4像素邻域内的双立方插值
      INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
"""
new_array = cv2.resize(img, (5000, 5000), interpolation=cv2.INTER_CUBIC)

cv2.imwrite(r'dataset\PNG\1.png', new_array)

批量转换:

from osgeo import gdal
import os


def TIFToPNG(tifDir_path, pngDir_path):
    for fileName in os.listdir(tifDir_path):
        if fileName[-4:] == ".tif":
            ds = gdal.Open(tifDir_path + fileName)
            driver = gdal.GetDriverByName('PNG')
            driver.CreateCopy(pngDir_path + fileName[:-4] + ".png", ds)
            print("已生成:",pngDir_path + fileName[:-4] + ".png")

if __name__ == '__main__':
    tifDir_path = "D:/dataset/TIF/"
    pngDir_path = "D:/dataset/PNG/"
    TIFToPNG(tifDir_path, pngDir_path)

你可能感兴趣的:(图像处理,python)