%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

"""
Explanation: Experimentando leitura de imagens com matplotlib
importando
End of explanation
"""


f = mpimg.imread('../data/cameraman.tif')
print(f.dtype,f.shape,f.max(),f.min())

"""
Explanation: Leitura usando matplotlib native e com PIL
O matplotlib possui a leitura nativa de imagens no formato png. Quando este formato é lido, a imagem é automaticamente mapeada da faixa 0 a 255 contido no pixel uint8 da imagem para float 0 a 1 no pixel do array lido
Já se o formato for outro, se o PIL estiver instalado, a leitura é feita pelo PIL e neste caso o tipo do pixel é mantido em uint8, de 0 a 255. Veja no exemplo a seguir
Leitura de imagem em níveis de cinza de imagem TIFF:
Como a imagem lida é TIFF, o array lido fica no tipo uint8, com valores de 0 a 255
End of explanation
"""


fcor = mpimg.imread('../data/boat.tif')
print(fcor.dtype,fcor.shape,fcor.max(),fcor.min())

"""
Explanation: Leitura de imagem colorida formato TIFF
Quando a imagem é colorida e não está no formato png, matplotlib utiliza PIL para leitura. O array terá o tipo uint8 e o shape do array é organizado em (H, W, 3).
End of explanation
"""


fcor2 = mpimg.imread('../figures/capa_IA898.png')
print(fcor2.dtype, fcor2.shape, fcor2.max(), fcor2.min())

"""
Explanation: Leitura de imagem colorida formato png
Se a imagem está no formato png, o matplotlib mapeia os pixels de 0 a 255 para float de 0 a 1.0
End of explanation
"""


%matplotlib inline
plt.imshow(f, cmap='gray')
plt.colorbar()

plt.imshow(fcor)
plt.colorbar()

plt.imshow(fcor2)
plt.colorbar()

"""
Explanation: Mostrando as imagens lidas
End of explanation
"""


plt.imshow(fcor2)
plt.imshow(fcor)
plt.imshow(f, cmap='gray')

"""
Explanation: Observe que o display mostra apenas a última chamada do imshow
End of explanation
"""


import numpy as np
import sys,os
ia898path = os.path.abspath('../../')
if ia898path not in sys.path:
    sys.path.append(ia898path)
import ia898.src as ia


f = ia.nbread('../figures/capa_IA898.png')
print(f.shape)

plt.imshow(f)

f = ia.nbread('../../ia636/ia636/images/wheel.png')
print(f.shape)
plt.imshow(f,cmap='gray')


f = ia.nbread('../../ia636/ia636/images/blobs.pbm')
print(f.shape,f.dtype)
plt.imshow(f,cmap='gray')


import PIL
from PIL import Image

image_path = '../../ia636/ia636/images/blobs.pbm'
with Image.open(image_path) as image:
    im_arr = np.fromstring(image.tobytes(), dtype=np.uint8)
    print(im_arr.shape)
    print(image.size)
    print(image.mode)
    #print(image.)

"""
Explanation: Lendo com nbread (PIL)
End of explanation
"""


