Convert JPG to TIFF

Posted on Apr 7, 2022
# Convert JPG to TIFF 
# Date: 07/04/2022
# Written by Nandan M

import exiftool
import os
import numpy as np
import subprocess
from skimage import io
from PIL import Image

EXIFTOOL_PATH = os.environ.get("EXIF_TOOL_PATH", "/usr/bin/exiftool")


def read_and_copy_metadata(src_image_path: str, dst_image_path: str):
    """
    Copies metadata from original image to converted image
    :param src_image_path: Source image path
    :param dst_image_path: Destination image path
    :return:
    """

    bytes_src_path = bytes(src_image_path, "utf-8")
    bytes_dest_path = bytes(dst_image_path, "utf-8")
    with exiftool.ExifTool(EXIFTOOL_PATH) as et:
        et.execute(b"-tagsFromFile", bytes_src_path, bytes_dest_path)

def save_tiff(img_path, tiff_file_out, tiff_file_name, path_to_exif, Planck_0=1):
    tiff_outpath = tiff_file_out + "/" + tiff_file_name
    out_tiff = open(str(tiff_outpath), "w+")
    print(img_path)
    subprocess.run([str(path_to_exif), "-rawthermalimage", "-b", str(img_path)], stdout=out_tiff)
    img = io.imread(tiff_outpath)
    img[img + Planck_0 <= 0] = np.min(img[img + Planck_0 > 0])
    io.imsave(tiff_outpath, img)

    return img, str(tiff_outpath)

def save_temp_tiff(img, tiff_outpath):
    img = img.astype('float16')
    io.imsave(tiff_outpath, img)


img_file = './DJI_0244.jpg'
tiff_out = "./converted/DJI_0244.tiff"
im = Image.open(img_file)
im.save(tiff_out, 'TIFF')
read_and_copy_metadata(img_file, tiff_out)