Ejemplo n.º 1
0
    def setup_gui(self):
        filename = os.path.join(os.path.dirname(__file__),
                                'uniformlist_plugin.ui')
        data = QtCore.QByteArray(open(filename, 'rb').read())
        buffer = QtCore.QBuffer(data)
        self.window = QtUiTools.QUiLoader().load(buffer)
        self.window.resize(350, 32 + self.size * 20)
        self.sliders = [None] * self.size
        self.labels = [None] * self.size
        top_layout = self.window.findChild(QtCore.QObject, 'gridLayout')
        for i in range(16):
            layout = self.window.findChild(QtCore.QObject,
                                           f"horizontalLayout_{i + 1}")
            if self.size <= i:
                for j in range(layout.count()):
                    widget = layout.itemAt(j).widget()
                    if widget:
                        widget.close()
                top_layout.removeItem(layout)
                continue
            slider = self.window.findChild(QtCore.QObject, f"slider_{i + 1}")
            label = self.window.findChild(QtCore.QObject, f"value_{i + 1}")
            resolution = self.config['resolution'][i]
            slider.setRange(self.config['min'][i] * resolution,
                            self.config['max'][i] * resolution)
            self.sliders[i] = slider
            self.labels[i] = label
            # Quick trick to workaround python namespace by "double-lambda"
            slider.valueChanged.connect((lambda i: (lambda *_: self.labels[
                i].setText(f"{self.get_value(i): >4.2f}")))(i))
            slider.setValue(self.config['default'][i] * resolution)

        # Quick trick to prevent this window from appearing before the main window
        QtCore.QTimer.singleShot(500, lambda *_: self.window.show())
Ejemplo n.º 2
0
    def __init__(self, combo, fps=15, audio_phonems=None):
        self.combo = combo

        # audio
        if combo is not None or audio_phonems is not None:
            if audio_phonems is None:
                audio_phonems = combo.get_audio_phonems()
            rate, wave = concat_segments(audio_phonems)
            self.audio_format = get_format(rate, wave)
            self.data = QtCore.QByteArray(wave.tobytes(order="C"))
            self.audio_input = QtCore.QBuffer(self.data)
        else:
            self.audio_format = None
            self.data = None
            self.audio_input = None

        self.timer = None
        self.audio_output = None

        self.fps = fps

        self.t = 0
        self.period_ms = 1.0 / fps

        if audio_phonems is None:
            self.frames = get_loading_frames(fps)
        else:
            self.frames = self.get_video_extract(audio_phonems)
Ejemplo n.º 3
0
def add_marker_from_svg(file_path,
                        marker_name,
                        pixel_x=10,
                        pixel_y=None,
                        isLSBFirst=False,
                        isUpToDown=False):
    """adds a new marker bitmap from a vector graphic (svg)"""

    # get an icon from the svg rendered with the given pixel
    from PySide2 import QtCore, QtGui
    pixel_y = pixel_y or pixel_x
    icon = QtGui.QIcon(file_path)
    icon = QtGui.QBitmap(icon.pixmap(pixel_x, pixel_y))

    # create a XMP-icon
    buffer = QtCore.QBuffer()
    buffer.open(buffer.WriteOnly)
    icon.save(buffer, "XPM")
    buffer.close()

    # get a string from the XMP-icon
    ary = str(buffer.buffer(), "utf8")
    ary = ary.split("\n", 1)[1]
    ary = ary.replace('\n', "").replace('"', "").replace(";", "")
    ary = ary.replace("}", "").replace("#", "x").replace(".", " ")
    string = str.join("", ary.split(",")[3:])

    # add the new marker style
    setattr(coin.SoMarkerSet, marker_name,
            coin.SoMarkerSet.getNumDefinedMarkers())
    coin.SoMarkerSet.addMarker(getattr(coin.SoMarkerSet, marker_name),
                               coin.SbVec2s([pixel_x, pixel_y]), string,
                               isLSBFirst, isUpToDown)
Ejemplo n.º 4
0
    def CadEmpresa(self):
        INSERI = CrudEmpresa()
        INSERI.idEmpresa = self.tx_idEmpresa.text()
        INSERI.NomeFantasia = self.tx_NomeFantasia.text().upper()
        INSERI.RazaoSocial = self.tx_RazaoSocial.text().upper()
        INSERI.cnpj = self.tx_Cnpj.text()
        INSERI.inscEstadual = self.tx_IE.text()
        INSERI.telefone = re.sub('[^[0-9]', '',
                                 (self.tx_TelefoneEmpresa.text()))
        INSERI.email = self.tx_EmailEmpresa.text()
        INSERI.site = self.tx_SiteEmpresa.text()
        INSERI.obs = self.tx_ObsEmpresa.text().upper()
        INSERI.cep = re.sub('[^[0-9]', '', (self.tx_CepEmpresa.text()))
        INSERI.endereco = self.tx_Endereco.text().upper()
        INSERI.numero = self.tx_NumEmpresa.text()
        INSERI.bairro = self.tx_BairroEmpresa.text().upper()
        INSERI.cidade = self.tx_CidadeEmpresa.text().upper()
        INSERI.estado = self.tx_EstadoEmpresa.text().upper()
        INSERI.titulo = self.tx_Titulo.text()
        INSERI.subtitulo = self.tx_SubTitulo.text()

        if self.lb_LogoEmpresa.pixmap():
            image = QtGui.QPixmap(self.lb_LogoEmpresa.pixmap())
            data = QtCore.QByteArray()
            buf = QtCore.QBuffer(data)
            image.save(buf, 'PNG')
            INSERI.logo = str(data.toBase64(), encoding='utf8')

        INSERI.CadEmpresa()
        self.lb_NomeFantasia.setText(self.tx_Titulo.text())
        self.lb_NomeFantasia2.setText(INSERI.subtitulo)
        self.setWindowTitle(INSERI.titulo + " " + INSERI.subtitulo)
Ejemplo n.º 5
0
    def toBase64(self):
        self.__buffer = QtCore.QBuffer()
        self.__buffer.open(QtCore.QBuffer.ReadWrite)

        self.__render()

        b64 = self.__buffer.data().toBase64().data()
        return b64
Ejemplo n.º 6
0
 def encode_pixmap(self, pixmap):
     # byteArray + buffer 通过Base64将图片编码为二进制格式,MIMEDATA相关
     pix_bytes = QtCore.QByteArray()
     buffer = QtCore.QBuffer(pix_bytes)
     # buffer使用需要打开和关闭
     buffer.open(QtCore.QBuffer.WriteOnly)
     pixmap.save(buffer, "PNG")
     return pix_bytes.toBase64().data()
Ejemplo n.º 7
0
def pixmap_to_bytes(pixmap, save_type="PNG"):
    bytarr = QtCore.QByteArray()
    buf = QtCore.QBuffer(bytarr)
    buf.open(QtCore.QIODevice.WriteOnly)

    pixmap.save(buf, save_type)

    return bytarr.data()
Ejemplo n.º 8
0
 def save_copy(self):
     fd = QtWidgets.QFileDialog()
     fd.setDirectory(QtCore.QDir('~/'))
     savefn = fd.getSaveFileName(self, 'Save File')[0]
     pixmap = self.original_snap
     barray = QtCore.QByteArray()
     qbuffer = QtCore.QBuffer(barray)
     qbuffer.open(QtCore.QIODevice.WriteOnly)
     pixmap.save(qbuffer, "PNG")
     bytesio = BytesIO(barray.data())
     bytesio.seek(0)
     with open(savefn, 'wb') as savefile:
         savefile.write(bytesio.read())
Ejemplo n.º 9
0
    def take_screenshot(self):
        from PySide2 import QtCore as pyqt5c
        from PySide2 import QtWidgets as pyqt5w

        screen = pyqt5w.QApplication.primaryScreen()
        pixmap = screen.grabWindow(self.groupBox.winId())

        ba = pyqt5c.QByteArray()
        buff = pyqt5c.QBuffer(ba)
        pixmap = pixmap.scaled(500, 500, Qt.KeepAspectRatio,
                               Qt.SmoothTransformation)
        pixmap.save('test1.tif', 'TIF')
        return ba.data()
Ejemplo n.º 10
0
    def _make_output(self, output_info, data, volume):
        output = QtMultimedia.QAudioOutput(output_info,
                                           output_info.preferredFormat())
        output.setVolume(volume)
        output.stateChanged.connect(lambda: self._delete_output(output))

        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QIODevice.ReadWrite)
        buffer.write(data)
        buffer.seek(0)
        output.start(buffer)

        return output
Ejemplo n.º 11
0
    def grabar(self):
        regMarker = self.liEjemplos[0].bloqueDatos
        name = regMarker.name.strip()
        if name == "":
            QTUtil2.message_error(self, _("Name missing"))
            return

        pm = self.liEjemplos[0].pixmapX()
        bf = QtCore.QBuffer()
        pm.save(bf, "PNG")
        regMarker.png = bytes(bf.buffer())

        self.regMarker = regMarker
        self.accept()
Ejemplo n.º 12
0
    def start_gui_updater(self):
        if not self.loaded:
            return

        # Get Icon for FreeCAD.
        icon = QtCore.QByteArray()
        buf = QtCore.QBuffer(icon)
        buf.open(QtCore.QIODevice.WriteOnly);
        pixmap = QtGui.QPixmap(":/icons/freecad.svg")
        pixmap.save(buf, "PNG")

        self.updater.setApplicationName("FreeCAD")
        self.updater.setIcon(icon)
        self.updater.start(self.updater.getConstant("Action::UpdateWithGUI"))
Ejemplo n.º 13
0
    def update_tooltip(self, gap=5):

        nodes = [node() for node in self.children]
        n_side = len(nodes)
        if n_side > 3:
            n_side = max(1, int(n_side**0.5))
        x = 0
        y = 0
        h_max = 0
        n = 0
        x_max, y_max = 0, 0
        positions = []
        for node in nodes:
            positions.append([x + gap, y + gap])
            w, h = node._rect.width() + gap, node._rect.height() + gap
            h_max = max(h_max, h)
            x += w
            n += 1
            if n > n_side:
                x = 0
                y += h_max
                h_max = 0
                n = 0
            x_max = max(x_max, x + w)
            y_max = max(y_max, y + h)
        if n_side == len(nodes):
            x_max -= w

        scale = SCALE_TOOLTIP / SCALE_DRAWINGS
        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QIODevice.WriteOnly)
        gen = QtSvg.QSvgGenerator()
        gen.setOutputDevice(buffer)
        painter = QtGui.QPainter(gen)
        painter.scale(scale, scale)
        painter.setPen(QtGui.QPen(QtCore.Qt.white, 0))
        painter.setBrush(QtGui.QBrush(QtCore.Qt.white))
        rect = QtCore.QRectF(0, 0, x_max, y_max)
        painter.drawRect(rect)
        painter.setPen(QtGui.QPen(QtCore.Qt.black, 0.5))
        for i in range(len(nodes)):
            x, y = positions[i]
            painter.drawPicture(x, y, nodes[i].picture)

        painter.drawText(rect, QtCore.Qt.AlignCenter | QtCore.Qt.AlignBottom,
                         self.label)
        painter.end()
        self.tool_tip = "<img src=\"data:image/png;base64,%s\">" % (bytes(
            buffer.data().toBase64()).decode())
Ejemplo n.º 14
0
    def fetch_icon(self):
        """ Fetch the selected node's icon binary data
        """
        node_type = self.asset.type()
        node_def = node_type.definition()
        qicon = hou.ui.createQtIcon(node_def.icon())
        pix = qicon.pixmap(32, 32).toImage()
        data = QtCore.QByteArray()
        buffer = QtCore.QBuffer(data)
        buffer.open(QtCore.QIODevice.WriteOnly)
        pix.save(buffer, "PNG")

        self.main_icon_section = "HELP_CARD_ICO_" + node_def.nodeTypeName(
        ) + ".png"
        self.main_icon_data = str(buffer.data())
Ejemplo n.º 15
0
    def setup_gui(self):
        filename = os.path.join(os.path.dirname(__file__), 'uniform_plugin.ui')
        data = QtCore.QByteArray(open(filename, 'rb').read())
        buffer = QtCore.QBuffer(data)
        self.window = QtUiTools.QUiLoader().load(buffer)
        self.window.setWindowTitle(self.config['name'])
        self.slider = self.window.findChild(QtCore.QObject, 'horizontalSlider')
        self.label = self.window.findChild(QtCore.QObject, 'label')
        self.slider.setRange(self.config['min'] * self.resolution,
                             self.config['max'] * self.resolution)
        self.slider.valueChanged.connect(
            lambda *_: self.label.setText(f"{self.get_value(): >4.2f}"))

        # Quick trick to prevent this window from appearing before the main window
        QtCore.QTimer.singleShot(500, lambda *_: self.window.show())
Ejemplo n.º 16
0
    def dropEvent(self, event: QtGui.QDropEvent):
        if (event.mimeData().hasUrls()):
            cursor = None
            working_path = None

            for cur_path in event.mimeData().urls():
                if (cur_path.isLocalFile()):
                    path = cur_path.path(options=QtCore.QUrl.FullyDecoded)

                    if (isinstance(pathlib.PurePath(), pathlib.PureWindowsPath)
                            and path.startswith("/")):
                        path = path[1:]

                    with open(path, "rb") as f:
                        try:
                            cursor = load_cursor(f)
                            working_path = path
                        except ValueError as e:
                            print(e)
                else:
                    try:
                        req = urlopen(cur_path.url())
                        data = BytesIO(req.read())
                        data.seek(0)
                        cursor = load_cursor(data)
                        working_path = None
                    except (URLError, ValueError) as e:
                        print(e)

            if (cursor is not None):
                self.current_cursor = cursor
                self._current_file = working_path
                event.acceptProposedAction()
                return

        if (event.mimeData().hasImage()):
            mem_img = BytesIO()
            buffer = QtCore.QBuffer()
            image = QtGui.QImage(event.mimeData().imageData())
            image.save(buffer, "PNG")

            mem_img.write(buffer)
            mem_img.seek(0)

            self.current_cursor = load_cursor(mem_img)
            self._current_file = None
            event.acceptProposedAction()
            return
Ejemplo n.º 17
0
def qt_image_to_array(qimage: QtGui.QImage) -> np.ndarray:
    """
    Convert qimage to numpy array
    
    Code adapted from SO:
    https://stackoverflow.com/a/1756587/7330813
    """
    bio = io.BytesIO()
    bfr = QtCore.QBuffer()
    bfr.open(QtCore.QIODevice.ReadWrite)
    qimage.save(bfr, 'PNG')
    bytearr = bfr.data()
    bio.write(bytearr.data())
    bfr.close()
    bio.seek(0)
    img = Image.open(bio)
    return np.array(img)
Ejemplo n.º 18
0
 def captureParams(self):
     params = self.getParams()
     params["image-format"] = "PNG"
     params["image-encoding"] = "hex"
     screen = self.viewerWidget.grabFramebuffer()
     barr = QtCore.QByteArray()
     qbfr = QtCore.QBuffer(barr)
     qbfr.open(QtCore.QIODevice.WriteOnly)
     screen.save(qbfr, params["image-format"])
     params["image"] = barr.data().hex()
     fileName = QtWidgets.QFileDialog.getSaveFileName(
         self.centralwidget, "Save Parameters", self.jsondir,
         "Json Files (*.json)")
     fpath = fileName[0]
     if fpath:
         with open(fpath, "w", encoding="utf-8", newline="\n") as fd:
             json.dump(params, fd, ensure_ascii=False, indent=2)
Ejemplo n.º 19
0
    def drawBaseImage(self, backgroundFile, titleText, titleFont, fontSize, alignment,\
                       xOffset, yOffset, textColor, visColor):
        if backgroundFile == '':
            im = Image.new("RGB", (1280, 720), "black")
        else:
            im = Image.open(backgroundFile)

        if self._image == None or not self.lastBackgroundImage == backgroundFile:
            self.lastBackgroundImage = backgroundFile

            # resize if necessary
            if not im.size == (1280, 720):
                im = im.resize((1280, 720), Image.ANTIALIAS)

            self._image = ImageQt(im)

        self._image1 = QtGui.QImage(self._image)
        painter = QPainter(self._image1)
        font = titleFont
        font.setPixelSize(fontSize)
        painter.setFont(font)
        painter.setPen(QColor(*textColor))

        yPosition = yOffset

        fm = QtGui.QFontMetrics(font)
        if alignment == 0:  #Left
            xPosition = xOffset
        if alignment == 1:  #Middle
            xPosition = xOffset - fm.width(titleText) / 2
        if alignment == 2:  #Right
            xPosition = xOffset - fm.width(titleText)
        painter.drawText(xPosition, yPosition, titleText)
        painter.end()

        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QIODevice.ReadWrite)
        self._image1.save(buffer, "PNG")

        strio = io.BytesIO()
        strio.write(buffer.data())
        buffer.close()
        strio.seek(0)
        return Image.open(strio)
Ejemplo n.º 20
0
 def __init__(self, parent=None):
     super(QGifWidget, self).__init__(parent)
     self.setAlignment(QtCore.Qt.AlignCenter)
     self.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                        QtWidgets.QSizePolicy.Expanding)
     fileData = None
     with open(GIF_PATH, "rb") as gifFile:
         fileData = gifFile.read()
     self.gifByteArray = QtCore.QByteArray(fileData)
     self.gifBuffer = QtCore.QBuffer(self.gifByteArray)
     self.movie = QtGui.QMovie()
     self.movie.setFormat("GIF")
     self.movie.setDevice(self.gifBuffer)
     self.movie.setCacheMode(QtGui.QMovie.CacheAll)
     self.movie.setSpeed(100)
     self.setMovie(self.movie)
     self.movie.jumpToFrame(0)
     self.movie.start()
     self.movie.setScaledSize(self.size())
    def grabar(self):
        regFlecha = self.liEjemplos[0].bloqueDatos
        if self.siNombre:
            name = regFlecha.name.strip()
            if name == "":
                QTUtil2.message_error(self, _("Name missing"))
                return

        bf = regFlecha
        p = bf.physical_pos
        p.x = 0
        p.y = 16
        p.ancho = 32
        p.alto = 16

        pm = BoardArrows.pixmapArrow(bf, 32, 32)
        buf = QtCore.QBuffer()
        pm.save(buf, "PNG")
        regFlecha.png = bytes(buf.buffer())
        self.regFlecha = regFlecha
        self.accept()
Ejemplo n.º 22
0
    def update_tooltip(self):

        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QIODevice.WriteOnly)
        scale = SCALE_TOOLTIP / SCALE_DRAWINGS
        gen = QtSvg.QSvgGenerator()
        gen.setOutputDevice(buffer)
        painter = QtGui.QPainter(gen)
        painter.scale(scale, scale)
        rect = self._rect.marginsAdded(QtCore.QMargins(10, 10, 10, 10))
        rect = QtCore.QRectF(rect.x(), rect.y(),
                             rect.width() * 0.8, rect.height())
        painter.setPen(QtGui.QPen(QtCore.Qt.white, 0))
        painter.setBrush(QtGui.QBrush(QtCore.Qt.white))
        painter.drawRect(rect)
        painter.setPen(QtGui.QPen(QtCore.Qt.black, 0.5))
        painter.drawPicture(0, 0, self.picture)
        painter.drawText(rect, QtCore.Qt.AlignCenter | QtCore.Qt.AlignBottom,
                         self.label)
        painter.end()
        self.tool_tip = "<img src=\"data:image/png;base64,%s\">" % (bytes(
            buffer.data().toBase64()).decode())
Ejemplo n.º 23
0
    def process(self, page_path: Path, warped, reliable, output):
        blocks = reliable.regions.by_path
        lines = reliable.lines.by_path

        if not blocks:
            return

        page = reliable.page
        predictors = warped.predictors

        qt_im = ImageQt(page.warped)
        pixmap = QtGui.QPixmap.fromImage(qt_im)
        pixmap = render_warped_line_paths(pixmap, lines, predictors, opacity=1)

        buffer = QtCore.QBuffer()
        buffer.open(QtCore.QBuffer.ReadWrite)
        pixmap.toImage().save(buffer, "PNG")
        im = PIL.Image.open(io.BytesIO(buffer.data())).convert("RGB")

        binarized = np.array(page.warped)
        thresh = skimage.filters.threshold_sauvola(binarized, window_size=15)
        binarized = PIL.Image.fromarray(
            (binarized > thresh).astype(np.uint8) * 255)

        alpha = np.array(binarized.convert("L")).astype(np.float32)
        alpha += self._options["marker_opacity"]
        alpha = (np.clip(alpha, 0, 1) * 255).astype(np.uint8)

        im = PIL.Image.composite(binarized.convert("RGB"), im,
                                 PIL.Image.fromarray(1 - alpha))

        qt_im = ImageQt(im)
        pixmap = QtGui.QPixmap.fromImage(qt_im)

        if self._options["show_confidence"]:
            pixmap = render_warped_line_confidence(pixmap, lines)

        output.annotation(pixmap.toImage())
Ejemplo n.º 24
0
    def cadProduto(self):
        INSERI = CrudProdutos()
        INSERI.idProduto = self.tx_idProduto.text()
        INSERI.descricaoProduto = self.tx_DescricaoProduto.text().upper()
        if self.lb_FotoProduto.pixmap():
            imagem = QtGui.QPixmap(self.lb_FotoProduto.pixmap())
            data = QtCore.QByteArray()
            buf = QtCore.QBuffer(data)
            imagem.save(buf, 'PNG')
            INSERI.imagemProduto = str(data.toBase64(), encoding='utf8')

        INSERI.idCategoria = self.cb_CategoriaProduto.currentData()
        INSERI.idMarca = self.cb_MarcaProduto.currentData()
        INSERI.estoqueMinimo = self.tx_EstoqueMinimoProduto.text()
        INSERI.estoqueMaximo = self.tx_EstoqueMaximoProduto.text()
        INSERI.obsProduto = self.tx_ObsProduto.text()
        INSERI.valorCompra = self.tx_ValorCompraProduto.text()
        INSERI.valorUnitario = self.tx_ValorUnitarioProduto.text()
        INSERI.valorAtacado = self.tx_ValorAtacadoProduto.text()
        INSERI.qtdeAtacado = self.tx_MinimoAtacado.text()
        INSERI.cadProduto()

        self.janelaProdutos()
Ejemplo n.º 25
0
 def audio_state_handler(self, state):
     if state == QtMultimedia.QAudio.IdleState and self.loop:
         self.audio_input.close()
         self.audio_input = QtCore.QBuffer(self.data)
         self.audio_input.open(QtCore.QIODevice.ReadWrite)
         self.audio_output.start(self.audio_input)