tiff文件转jpg文件

# -*- coding: UTF-8 -*-
import numpy as np
import os
import sys
from PIL import Image
from osgeo import gdal, gdalconst

import os

os.environ['PROJ_LIB'] = r'C:\Users\akitalee\anaconda3\envs\yolo\Library\share\proj'
os.environ['GDAL_DATA'] = r'C:\Users\akitalee\anaconda3\envs\yolo\Library\share'

# 读取tif
'''bandsOrder为RGB对应的波段顺序,
例如高分一号多光谱包含蓝,绿,红,近红外四个波段,
那么真彩色对应的波段顺序为3,2,1'''


def readTif(original, bandsOrder=[3, 2, 1]):
    driver = gdal.GetDriverByName('GTiff')
    driver.Register()
    ds = gdal.Open(original, gdal.GA_ReadOnly)
    cols = ds.RasterXSize
    rows = ds.RasterYSize
    geotransform = ds.GetGeoTransform()
    proj = ds.GetProjection()
    data = np.empty([rows, cols, 3], dtype=float)
    for i in range(3):
        band = ds.GetRasterBand(bandsOrder[i])
        data1 = band.ReadAsArray()
        data[:, :, i] = data1
    return data


# 百分比拉伸
def stretchImg(imgPath, resultPath, lower_percent=0.6, higher_percent=99.4):
    data = readTif(imgPath)
    n = data.shape[2]
    out = np.zeros_like(data, dtype=np.uint8)
    for i in range(n):
        a = 0
        b = 255
        c = np.percentile(data[:, :, i], lower_percent)
        d = np.percentile(data[:, :, i], higher_percent)
        t = a + (data[:, :, i] - c) * (b - a) / (d - c)
        t[t < a] = a
        t[t > b] = b
        out[:, :, i] = t
    outImg = Image.fromarray(np.uint8(out))
    outImg.save(resultPath)


if __name__ == '__main__':
    stretchImg(r"C:\Users\akitalee\Desktop\江都区2021_2米_丰水期.tif", r"C:\Users\akitalee\Desktop\江都1区2021_2米_丰水期.jpg")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水哥很水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值