def _build(self): self.mainLayout = qt.QVBoxLayout(self) self.parametersWidget = ParametersWidget(self) self.outputFileWidget = OutputFile(self) self.imageBrowser = ExternalImagesWindow.ExternalImagesWindow( self, crop=False, selection=False, imageicons=False) self.mainLayout.addWidget(self.parametersWidget) self.mainLayout.addWidget(self.outputFileWidget) self.mainLayout.addWidget(self.imageBrowser) self.parametersWidget.parametersWidgetSignal.connect(self.mySlot)
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = [ "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)" ] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None) if len(filenamelist) < 1: return imagelist = [] imagenames = [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape if filefilter.split()[0] in ["EDF"]: for filename in filenamelist: #read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) #the list of images keylist = edf.getSourceInfo()['KeyList'] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: #get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get('Title', "") if imagename != "": imagename += " " imagename += os.path.basename(filename) + " " + key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: #Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(self) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow( parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) #data=self.__stackImageData) self._showWidget() return
def _loadImageFiles(self): if self.getStackDataObject() is None: return getfilter = True fileTypeList = [ "PNG Files (*png)", "JPEG Files (*jpg *jpeg)", "IMAGE Files (*)", "DAT Files (*dat)", "CSV Files (*csv)", "EDF Files (*edf)", "EDF Files (*ccd)", "EDF Files (*)" ] message = "Open image file" filenamelist, filefilter = PyMcaFileDialogs.getFileList( parent=None, filetypelist=fileTypeList, message=message, getfilter=getfilter, single=False, currentfilter=None) if len(filenamelist) < 1: return imagelist = [] imagenames = [] mask = self.getStackSelectionMask() if mask is None: r, n = self.getStackROIImagesAndNames() shape = r[0].shape else: shape = mask.shape extension = qt.safe_str(os.path.splitext(filenamelist[0])[1]) if (filefilter.split()[0] in ["EDF"]) or \ (extension.upper() in [".EDF", ".TIF"]): for filename in filenamelist: #read the edf file edf = EDFStack.EdfFileDataSource.EdfFileDataSource(filename) #the list of images keylist = edf.getSourceInfo()['KeyList'] if len(keylist) < 1: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read image from file") msg.exec_() return for key in keylist: #get the data dataObject = edf.getDataObject(key) data = dataObject.data if data.shape[0] not in shape: continue if data.shape[1] not in shape: continue imagename = dataObject.info.get('Title', "") if imagename != "": imagename += " " imagename += os.path.basename(filename) + " " + key imagelist.append(data) imagenames.append(imagename) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return elif extension.lower() in [".csv", ".dat"]: # what to do if more than one file selected ? from PyMca5.PyMca import specfilewrapper as Specfile sf = Specfile.Specfile(filenamelist[0]) scan = sf[0] labels = scan.alllabels() data = scan.data() scan = None sf = None if "column" in labels: offset = labels.index("column") ncols = int(data[offset].max() + 1) offset += 1 else: raise IOError("Only images exported as csv supported") imagelist = [] imagenames = [] for i in range(offset, len(labels)): if labels[i].startswith("s("): continue tmpData = data[i] tmpData.shape = -1, ncols imagelist.append(tmpData) imagenames.append(labels[i]) crop = False self.widget = StackPluginResultsWindow.StackPluginResultsWindow( parent=None, usetab=False) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setStackPluginResults(imagelist, image_names=imagenames) self._showWidget() return else: #Try pure Image formats for filename in filenamelist: image = qt.QImage(filename) if image.isNull(): msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read file %s as an image" % filename) msg.exec_() return imagelist.append(image) imagenames.append(os.path.basename(filename)) if len(imagelist) == 0: msg = qt.QMessageBox(None) msg.setIcon(qt.QMessageBox.Critical) msg.setText("Cannot read a valid image from the file") msg.exec_() return self.widget = ExternalImagesWindow.ExternalImagesWindow( parent=None, rgbwidget=None, selection=True, colormap=True, imageicons=True, standalonesave=True) self.widget.buildAndConnectImageButtonBox() self.widget.sigMaskImageWidgetSignal.connect(self.mySlot) self.widget.setImageData(None) self.widget.setQImageList(imagelist, shape[1], shape[0], clearmask=False, data=None, imagenames=imagenames) #data=self.__stackImageData) self._showWidget() return