From 103bd96a3bf376f0c00fb0e5a56651a932e22af0 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Dec 2012 18:24:29 -0600 Subject: [PATCH] ENH: Adjusted save_to_file to create a proper composite image --- skimage/viewer/viewers/core.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/skimage/viewer/viewers/core.py b/skimage/viewer/viewers/core.py index ef450b3e..7db26659 100644 --- a/skimage/viewer/viewers/core.py +++ b/skimage/viewer/viewers/core.py @@ -8,8 +8,9 @@ except ImportError: QMainWindow = object # hack to prevent nosetest and autodoc errors print("Could not import PyQt4 -- skimage.viewer not available.") -from skimage import io +from skimage import io, img_as_float from skimage.util.dtype import dtype_range +import numpy as np from .. import utils from ..widgets import Slider from ..utils import dialogs @@ -119,9 +120,21 @@ class ImageViewer(QMainWindow): filename = dialogs.save_file_dialog() if filename is None: return - extent = self.ax.get_window_extent() - extent = extent.transformed(self.fig.dpi_scale_trans.inverted()) - self.fig.savefig(filename, bbox_inches=extent) + if len(self.ax.images) == 1: + io.imsave(self.image, filename) + else: + im1 = self.ax.images[1] + overlay = im1.cmap(im1.get_array()) + overlay = img_as_float(overlay) + im0 = self.ax.images[0] + underlay = im0.cmap(im0.get_array()) + underlay = img_as_float(underlay) + alpha = overlay[:, :, 3] + alpha = np.dstack((alpha, alpha, alpha)) + alpha /= alpha.max() + composite = (overlay[:, :, :3] * alpha + + underlay[:, :, :3] * (1 - alpha)) + io.imsave(filename, composite) def closeEvent(self, event): self.close()