Самый быстрый способ загрузить файл EXR - PullRequest
0 голосов
/ 12 января 2019

Я хочу загрузить 32-битный файл EXR, а затем изменить его размер до очень маленького разрешения, например 200x200, и вывести его как 8-битный JPG. Проблема в том, что для ввода изображения требуется в лучшем случае 2 секунды, и мне даже не нужны все те данные, которые идут с изображением. Есть ли способ ввода EXR, например, с более низким разрешением или с каждым n-м пикселем, чтобы весь процесс был быстрее?

def main(exrfile, jpgfile):
    file = OpenEXR.InputFile(exrfile)
    pt = Imath.PixelType(Imath.PixelType.FLOAT)
    dw = file.header()['dataWindow']
    size = (dw.max.x - dw.min.x + 1, dw.max.y - dw.min.y + 1)
    rgbf = [Image.frombytes("F", size, file.channel(c, pt)) for c in "RGB"]

    extrema = [im.getextrema() for im in rgbf]
    darkest = min([lo for (lo,hi) in extrema])
    lighest = max([hi for (lo,hi) in extrema])
    scale = 255 / (lighest - darkest)
    def normalize_0_255(v):
        return (v * scale) + darkest
    rgb8 = [im.point(normalize_0_255).convert("L") for im in rgbf]
    Image.merge("RGB", rgb8).resize((200,200)).save(jpgfile)
...