Exemplo n.º 1
0
    def __initFileFilters(self):
        """
        Private method to define the supported image file filters.
        """
        filters = {
            'bmp': self.tr("Windows Bitmap File (*.bmp)"),
            'gif': self.tr("Graphic Interchange Format File (*.gif)"),
            'ico': self.tr("Windows Icon File (*.ico)"),
            'jpg': self.tr("JPEG File (*.jpg)"),
            'mng': self.tr("Multiple-Image Network Graphics File (*.mng)"),
            'pbm': self.tr("Portable Bitmap File (*.pbm)"),
            'pcx': self.tr("Paintbrush Bitmap File (*.pcx)"),
            'pgm': self.tr("Portable Graymap File (*.pgm)"),
            'png': self.tr("Portable Network Graphics File (*.png)"),
            'ppm': self.tr("Portable Pixmap File (*.ppm)"),
            'sgi': self.tr("Silicon Graphics Image File (*.sgi)"),
            'svg': self.tr("Scalable Vector Graphics File (*.svg)"),
            'tga': self.tr("Targa Graphic File (*.tga)"),
            'tif': self.tr("TIFF File (*.tif)"),
            'xbm': self.tr("X11 Bitmap File (*.xbm)"),
            'xpm': self.tr("X11 Pixmap File (*.xpm)"),
        }

        outputFormats = []
        writeFormats = QImageWriter.supportedImageFormats()
        for writeFormat in writeFormats:
            try:
                outputFormats.append(filters[bytes(writeFormat).decode()])
            except KeyError:
                pass
        outputFormats.sort()
        self.__outputFilter = ';;'.join(outputFormats)

        self.__defaultFilter = filters['png']
Exemplo n.º 2
0
    def createActions(self):
        self.openAct = QAction("&Open...", self, shortcut="Ctrl+O",
                triggered=self.open)

        for format in QImageWriter.supportedImageFormats():
            format = str(format)

            text = format.upper() + "..."

            action = QAction(text, self, triggered=self.save)
            action.setData(format)
            self.saveAsActs.append(action)

        self.printAct = QAction("&Print...", self,
                triggered=self.scribbleArea.print_)

        self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q",
                triggered=self.close)

        self.penColorAct = QAction("&Pen Color...", self,
                triggered=self.penColor)

        self.penWidthAct = QAction("Pen &Width...", self,
                triggered=self.penWidth)

        self.clearScreenAct = QAction("&Clear Screen", self, shortcut="Ctrl+L",
                triggered=self.scribbleArea.clearImage)

        self.aboutAct = QAction("&About", self, triggered=self.about)

        self.aboutQtAct = QAction("About &Qt", self,
                triggered=QApplication.instance().aboutQt)
Exemplo n.º 3
0
 def __initFileFilters(self):
     """
     Private method to define the supported image file filters.
     """
     filters = {
         'bmp': self.tr("Windows Bitmap File (*.bmp)"),
         'gif': self.tr("Graphic Interchange Format File (*.gif)"),
         'ico': self.tr("Windows Icon File (*.ico)"),
         'jpg': self.tr("JPEG File (*.jpg)"),
         'mng': self.tr("Multiple-Image Network Graphics File (*.mng)"),
         'pbm': self.tr("Portable Bitmap File (*.pbm)"),
         'pcx': self.tr("Paintbrush Bitmap File (*.pcx)"),
         'pgm': self.tr("Portable Graymap File (*.pgm)"),
         'png': self.tr("Portable Network Graphics File (*.png)"),
         'ppm': self.tr("Portable Pixmap File (*.ppm)"),
         'sgi': self.tr("Silicon Graphics Image File (*.sgi)"),
         'svg': self.tr("Scalable Vector Graphics File (*.svg)"),
         'tga': self.tr("Targa Graphic File (*.tga)"),
         'tif': self.tr("TIFF File (*.tif)"),
         'xbm': self.tr("X11 Bitmap File (*.xbm)"),
         'xpm': self.tr("X11 Pixmap File (*.xpm)"),
     }
     
     outputFormats = []
     writeFormats = QImageWriter.supportedImageFormats()
     for writeFormat in writeFormats:
         try:
             outputFormats.append(filters[bytes(writeFormat).decode()])
         except KeyError:
             pass
     outputFormats.sort()
     self.__outputFilter = ';;'.join(outputFormats)
     
     self.__defaultFilter = filters['png']
Exemplo n.º 4
0
    def createActions(self):
        self.openAct = QAction("&Open...", self, shortcut="Ctrl+O",
                triggered=self.open)

        for format in QImageWriter.supportedImageFormats():
            format = str(format)

            text = format.upper() + "..."

            action = QAction(text, self, triggered=self.save)
            action.setData(format)
            self.saveAsActs.append(action)

        self.printAct = QAction("&Print...", self,
                triggered=self.scribbleArea.print_)

        self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q",
                triggered=self.close)

        self.penColorAct = QAction("&Pen Color...", self,
                triggered=self.penColor)

        self.penWidthAct = QAction("Pen &Width...", self,
                triggered=self.penWidth)

        self.clearScreenAct = QAction("&Clear Screen", self, shortcut="Ctrl+L",
                triggered=self.scribbleArea.clearImage)

        self.aboutAct = QAction("&About", self, triggered=self.about)

        self.aboutQtAct = QAction("About &Qt", self,
                triggered=QApplication.instance().aboutQt)
Exemplo n.º 5
0
    def __saveImage(self):
        """
        Private slot to handle the Save Image menu action.
        """
        if self.mainWidget is None:
            E5MessageBox.critical(self, self.tr("Save Image"),
                                  self.tr("""There is no UI file loaded."""))
            return

        defaultExt = "PNG"
        filters = ""
        formats = QImageWriter.supportedImageFormats()
        for imageFormat in formats:
            filters = "{0}*.{1} ".format(filters,
                                         bytes(imageFormat).decode().lower())
        fileFilter = self.tr("Images ({0})").format(filters[:-1])

        fname = E5FileDialog.getSaveFileName(self, self.tr("Save Image"), "",
                                             fileFilter)
        if not fname:
            return

        ext = QFileInfo(fname).suffix().upper()
        if not ext:
            ext = defaultExt
            fname.append(".{0}".format(defaultExt.lower()))

        pix = self.mainWidget.grab()
        self.__updateChildren(self.lastStyle)
        if not pix.save(fname, str(ext)):
            E5MessageBox.critical(
                self, self.tr("Save Image"),
                self.tr("""<p>The file <b>{0}</b> could not be saved.</p>""").
                format(fname))
Exemplo n.º 6
0
	def fileSaveAs(self):
		if self.image.isNull():
			return
		fname = self.filename if self.filename else '.'
		formats = ['{0}'.format(str(format).lower()) for format in QImageWriter.supportedImageFormats()]
		formats = ['*.{0}'.format(format[2:5]) for format in formats]
		fname,_ = QFileDialog.getSaveFileName(self, 'Image Editor - Save Image', fname, 'Image files ({0})'.format(' '.join(formats)))
		if fname:
			if '.' not in fname:
				fname += '.png'
			self.addRecentFiles(fname)
			self.filename = fname
			self.fileSave()
 def _supported_file_formats() -> typing.List[str]:
     """
     Returns all supported file types. This is the intersection of readable and writable file formats.
     """
     supported_input_formats = set(
         f.data().decode("utf-8")
         for f in QImageReader.supportedImageFormats())
     supported_output_formats = set(
         f.data().decode("utf-8")
         for f in QImageWriter.supportedImageFormats())
     supported_formats = sorted(
         list(supported_input_formats.intersection(
             supported_output_formats)))
     return supported_formats
Exemplo n.º 8
0
 def objectSaveAs(self, obj):
     formats = [
         '{0}'.format(str(format).lower())
         for format in QImageWriter.supportedImageFormats()
     ]
     formats = ['*.{0}'.format(format[2:5]) for format in formats]
     fname, _ = QFileDialog.getSaveFileName(
         self, 'De-occlusion - Save object', '.',
         'Image files ({0})'.format(' '.join(formats)))
     if fname:
         if '.' not in fname:
             fname += '.png'
         obj = np.concatenate([obj[:, :, :3][:, :, ::-1], obj[:, :, 3:4]],
                              axis=2)
         cv2.imwrite(fname, obj)
Exemplo n.º 9
0
 def fileSaveAs(self):
     if self.image.isNull():
         return True
     fname = self.filename if self.filename is not None else "."
     formats = (["*.{0}".format(format.data().decode("ascii").lower())
                 for format in QImageWriter.supportedImageFormats()])
     fname, tpye = QFileDialog.getSaveFileName(self,
                                               "Image Changer - Save Image", fname,
                                               "Image files ({0})".format(" ".join(formats)))
     if fname:
         if "." not in fname:
             fname += ".png"
         self.addRecentFile(fname)
         self.filename = fname
         return self.fileSave()
     return False
Exemplo n.º 10
0
 def fileSaveAs(self):
     if self.mainApp.canvas_show.isNull():
         return
     fname = self.filename if self.filename else '.'
     formats = [
         '{0}'.format(str(format).lower())
         for format in QImageWriter.supportedImageFormats()
     ]
     formats = ['*.{0}'.format(format[2:5]) for format in formats]
     fname, _ = QFileDialog.getSaveFileName(
         self, 'De-occlusion - Save Image', fname,
         'Image files ({0})'.format(' '.join(formats)))
     if fname:
         if '.' not in fname:
             fname += '.png'
         self.filename = fname
         self.fileSave()
Exemplo n.º 11
0
    def export(self):
        allowed_formats = QImageWriter.supportedImageFormats()
        allowed_formats = [
            str(f.data(), encoding='utf-8') for f in allowed_formats
        ]
        filter_string = 'Images ('
        for f in allowed_formats:
            filter_string += '*.%s ' % f
        filter_string = filter_string[:-1] + ')'

        fileName, _ = QFileDialog.getSaveFileName(self, "Export File",
                                                  QDir.currentPath(),
                                                  filter_string)
        if not fileName:
            return

        self.imageView.image.pixmap().save(fileName)
        self.statusbar.showMessage('Image exported to %s' % fileName)
Exemplo n.º 12
0
    def _initFileOptionsWidget(self):
        # List all image formats supported by QImageWriter
        exts = [bytes(ext).decode() for ext in QImageWriter.supportedImageFormats()]

        # insert them into file format combo box
        for ext in exts:
            self.fileFormatCombo.addItem(ext + " sequence")

        # connect handles
        self.fileFormatCombo.currentIndexChanged.connect(self._handleFormatChange)
        self.filePatternEdit.textEdited.connect(self._handlePatternChange)
        self.directoryEdit.textChanged.connect(self._validateFilePath)
        self.selectDirectoryButton.clicked.connect(self._browseForPath)

        # set default file format to png
        self.fileFormatCombo.setCurrentIndex(exts.index("png"))
        self._updateFilePattern()
        self._validateFilePath()
Exemplo n.º 13
0
 def __saveImage(self):
     """
     Private slot to handle the Save Image menu action.
     """
     if self.mainWidget is None:
         E5MessageBox.critical(
             self,
             self.tr("Save Image"),
             self.tr("""There is no UI file loaded."""))
         return
     
     defaultExt = "PNG"
     filters = ""
     formats = QImageWriter.supportedImageFormats()
     for format in formats:
         filters = "{0}*.{1} ".format(
             filters, bytes(format).decode().lower())
     filter = self.tr("Images ({0})").format(filters[:-1])
     
     fname = E5FileDialog.getSaveFileName(
         self,
         self.tr("Save Image"),
         "",
         filter)
     if not fname:
         return
         
     ext = QFileInfo(fname).suffix().upper()
     if not ext:
         ext = defaultExt
         fname.append(".{0}".format(defaultExt.lower()))
     
     if qVersion() >= "5.0.0":
         pix = self.mainWidget.grab()
     else:
         pix = QPixmap.grabWidget(self.mainWidget)
     self.__updateChildren(self.lastStyle)
     if not pix.save(fname, str(ext)):
         E5MessageBox.critical(
             self,
             self.tr("Save Image"),
             self.tr(
                 """<p>The file <b>{0}</b> could not be saved.</p>""")
             .format(fname))
Exemplo n.º 14
0
    def saveImage(self):
        image = QPixmap(self.size())
        self.render(image)

        formats = QImageWriter.supportedImageFormats()
        formats = map(
            lambda format: "*.{}".format(bytes(format).decode("utf-8")),
            formats)

        path = QFileDialog.getSaveFileName(
            self, self.tr("Save Image"),
            "{}_{}.png".format(self.multiplier, self.modulus),
            self.tr("Image files ({})").format(" ".join(formats)))

        filename = path[0]
        if filename is not None and filename != '':
            if not image.save(filename):
                QMessageBox.warning(
                    self, self.tr("Save Image"),
                    self.tr("Failed to save file at the specified location."))
Exemplo n.º 15
0
class ImageFileOpenDialog(FileDialogBase):
    """Modal dialog for inserting an image"""

    title = "Insert image"

    img_formats = QImageWriter.supportedImageFormats()
    img_format_strings = ("*." + fmt.data().decode('utf-8')
                          for fmt in img_formats)
    img_format_string = " ".join(img_format_strings)
    name_filter = "Images ({})".format(img_format_string) + ";;" \
                  "Scalable Vector Graphics (*.svg *.svgz)"

    def show_dialog(self):
        """Present dialog and update values"""

        path = self.main_window.settings.last_file_input_path
        self.file_path, self.selected_filter = \
            QFileDialog.getOpenFileName(self.main_window,
                                        self.title,
                                        str(path),
                                        self.name_filter)
Exemplo n.º 16
0
    def createActions(self):
        self.openAct = QAction("&Open...",
                               self,
                               shortcut="Ctrl+O",
                               triggered=self.open)

        self.openRecentAct = QAction("&Open Recent...",
                                     self,
                                     shortcut="Ctrl+Shift+O",
                                     triggered=self.openLast)

        for format in QImageWriter.supportedImageFormats():
            format = str(format)

            text = format.upper() + "..."

            action = QAction(text, self, triggered=self.save)
            action.setData(format)
            self.saveAsActs.append(action)

        self.printAct = QAction("&Print...",
                                self,
                                triggered=self.scribbleArea.print_)

        self.exitAct = QAction("E&xit",
                               self,
                               shortcut="Ctrl+Q",
                               triggered=self.close)

        self.penColorAct = QAction("&Pen Color...",
                                   self,
                                   triggered=self.penColor)

        self.penWidthAct = QAction("Pen &Width...",
                                   self,
                                   triggered=self.penWidth)

        self.startSweepAct = QAction("&Start Sweeping..",
                                     self,
                                     triggered=self.scribbleArea.startSweep)

        self.drawRectAct = QAction("&Grab Cut",
                                   self,
                                   triggered=self.scribbleArea.startGrabCut)

        self.axisRotateAct = QCheckBox(checked=True, text="Axis Rotate")
        self.axisRotateAct.stateChanged.connect(
            self.scribbleArea.setAxisRotate)
        label = QLabel("Line:")
        self.input_axisResolution = QLineEdit()
        self.input_axisResolution.setText("20")
        self.input_axisResolution.setMaximumWidth(80)
        self.input_axisResolution.textChanged.connect(
            self.scribbleArea.setModelResolution)

        self.input_primitiveDensity = QLineEdit()
        self.input_primitiveDensity.setText("200")
        self.input_primitiveDensity.setMaximumWidth(80)
        self.input_primitiveDensity.textChanged.connect(
            self.scribbleArea.setModelDensity)

        self.clearScreenAct = QAction("&Clear Screen",
                                      self,
                                      shortcut="Ctrl+L",
                                      triggered=self.scribbleArea.clearImage)

        self.aboutAct = QAction("&About", self, triggered=self.about)

        self.aboutQtAct = QAction("About &Qt",
                                  self,
                                  triggered=QApplication.instance().aboutQt)
Exemplo n.º 17
0
 def writableImageFormatsFilter():
     return toImageFileFilter(QImageWriter.supportedImageFormats())