方式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)