Source code for jammy.image.imgio
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# File : imgio.py
# Author : Jiayuan Mao
# Email : maojiayuan@gmail.com
# Date : 01/19/2018
#
# This file is part of Jacinle.
# Distributed under terms of the MIT license.
import os as os
import os.path as osp
import numpy as np
from . import backend
from .imgproc import dimshuffle
__all__ = [
"imread",
"imwrite",
"imshow",
"plt2pil",
"plt2nd",
"nd2pil",
"pil2nd",
"savefig",
]
[docs]def imread(path, *, shuffle=False):
if not osp.exists(path):
return None
i = backend.imread(path)
if i is None:
return None
if shuffle:
return dimshuffle(i, "channel_first")
return i
[docs]def imwrite(path, img, *, shuffle=False):
if shuffle:
img = dimshuffle(img, "channel_last")
backend.imwrite(path, img)
[docs]def imshow(title, img, *, shuffle=False):
if shuffle:
img = dimshuffle(img, "channel_last")
backend.imshow(title, img)
[docs]def plt2pil(fig):
"""Convert a Matplotlib figure to a PIL Image and return it"""
import io
from PIL import Image
buf = io.BytesIO()
fig.savefig(buf)
buf.seek(0)
img = Image.open(buf)
return img
[docs]def plt2nd(fig):
return np.array(plt2pil(fig))
[docs]def savefig(fig, fig_name):
fig_path = fig_name.split("/")
if len(fig_path) > 1:
save_path = "/".join(fig_path[:-1])
if not osp.isdir(save_path):
os.makedirs(save_path, exist_ok=True)
fig.savefig(fig_name)
nd2pil=backend.pil_nd2img
pil2nd=backend.pil_img2nd