import sys import numpy as np from PIL import Image from tifffile import imread image = imread("/dev/stdin") ma = np.max(image) mi = np.min(image) print(image.dtype, image.shape, mi, ma, np.median(image), file=sys.stderr) im = None if sys.argv[1] == 'scaled': im = np.clip(image // (image.shape[0] * image.shape[1]), 0, 255) elif sys.argv[1] == 'normal': im = (image-mi) * 255 // (ma-mi) elif sys.argv[1] == 'center': im = image * 127 // (ma-mi) + 127 elif sys.argv[1] == 'log2abs': im = np.log2(np.abs(image)+1) * 256 / np.log2(max(ma,-mi)+1) elif sys.argv[1] == 'log2bi': im = (np.log2(np.clip(image+1,1,np.inf)) * 127 / (max(np.log2(ma),1)+1)) im -= (np.log2(np.clip(-image+1,1,np.inf)) * 127 / (max(np.log2(-mi),1)+1)) im += 127 else: raise Exception("Usage: showtiff.py scaled/normal/center/log2abs/log2bi") if len(sys.argv) == 3 and sys.argv[2] == 'save': Image.fromarray(np.asarray(im, dtype='uint8')).save("/dev/stdout", format="png") else: Image.fromarray(np.asarray(im, dtype='uint8')).show()