diff --git a/diffpy/srxplanar/loadimage.py b/diffpy/srxplanar/loadimage.py index 5a2c660..5d73db4 100644 --- a/diffpy/srxplanar/loadimage.py +++ b/diffpy/srxplanar/loadimage.py @@ -19,20 +19,43 @@ import fnmatch import sys from diffpy.srxplanar.srxplanarconfig import _configPropertyR +import tifffile from tifffile import imsave as saveImage +import subprocess +import numpy as np -try: - import fabio - - def openImage(im): - rv = fabio.openimage.openimage(im) - return rv.data -except: - import tifffile - def openImage(im): - rv = tifffile.imread(im) - return rv +def openImage(im): + ext = os.path.splitext(im)[1].lower() + try: + if ext == '.txt': + rv = np.loadtxt(im) + elif ext == '.dm3': + import DM3lib + dm3 = DM3lib.DM3(im) + rv = dm3.imagedata + elif ext in ['.tiff', '.tif']: + rv = tifffile.imread(im) + if len(rv.shape) == 3: + ind = rv.shape.index(min(rv.shape)) + rv = rv.mean(axis=ind) + else: + code = 'import numpy; import fabio; numpy.save("temp.npy", fabio.openimage.openimage("%s").data)' % im + cmd = [sys.executable, '-c', "'" + code + "'"] + p = subprocess.Popen(cmd) + p.wait() + rv = np.load('temp.npy') + try: + os.remove('temp.npy') + except: + pass + try: + p.terminate() + except: + pass + except: + rv = None + return rv class LoadImage(object):