def load_api(self): for api in self.father.all_api: pix = QPixmap() if api == '随机': pix.loadFromData( QByteArray.fromBase64( b'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' )) else: pix.loadFromData( QByteArray.fromBase64(eval('self.father.%s.b64_data' % api))) ico = QIcon(pix) ico.actualSize(QSize(22, 22)) self.api_choose.addItem(ico, api) self.api_choose.setCurrentText(self.father.config['api']) if self.father.config['api'] != '随机': self.father.api = eval('self.father.%s' % self.father.config['api']) self.category_choose.addItems(self.father.api.cate) self.category_choose.setCurrentText(self.father.config['category']) if self.father.config['play_what'] != '网络': self.api_choose.setEnabled(False) self.category_choose.setEnabled(False) else: self.category_choose.addItem('随机') self.category_choose.setCurrentText('随机')
def update(self, proto, msg=None, **kwargs): code = getattr(msg, settings.RESPONSE, '') if code == 202: lst = [] for username, ava in getattr(msg, settings.LIST_INFO, []): user = User.by_name(username=username) if user: if ava: user.avatar = QByteArray.fromBase64( base64.b64decode(ava)) else: user = User(username=username, password='******', avatar=QByteArray.fromBase64( base64.b64decode(ava)) if ava else None) lst.append(user) with db_lock: User.save_all(lst) proto.notify(f'done_{self.name}') else: proto.write( Message( **{ settings.ACTION: settings.USERS_REQUEST, settings.USER: settings.USER_NAME, })) proto.notify(f'send_{self.name}')
def saveImage(self, width, height, dataUrl): image = None if dataUrl: ba = QByteArray.fromBase64(dataUrl[22:].encode("ascii")) image = QImage() image.loadFromData(ba) self.imageReceived.emit(width, height, image)
def SCR_As_ByteArray(base64_data): _barray = QByteArray() _barray_data = _barray.fromBase64(basbase64_datae64String.encode("utf-8")) return _barray_data
def __readImage(self): atts = self.xml.attributes() source = atts.value("source") format = atts.value("format") if len(source)==0: while (self.xml.readNextStartElement()): if (self.xml.name() == "data"): atts = self.xml.attributes() encoding = atts.value("encoding") data = self.xml.readElementText().toLatin1() if (encoding == "base64"): data = QByteArray.fromBase64(data) self.xml.skipCurrentElement() return QImage.fromData(data, format.toLatin1()) else: self.__readUnknownElement() else: self.xml.skipCurrentElement() source = self.p.resolveReference(source, self.mPath) image = self.p.readExternalImage(source) if (image.isNull()): self.xml.raiseError(self.tr("Error loading image:\n'%s'"%source)) return image return QImage()
def SelectProduto(self, valor): id = valor self.FormProdutos() self.tx_idProduto.setText(str(id)) busca = CrudProduto() busca.id = id busca.selectProdutoId() self.tx_DescricaoProduto.setText(busca.produto) if busca.imagem: pixmap = QPixmap() pixmap.loadFromData( QByteArray.fromBase64(busca.imagem)) self.lb_FotoProduto.setPixmap(pixmap.scaledToWidth( 150, Qt.TransformationMode(Qt.FastTransformation))) # self.lb_FotoProduto.setScaledContents(True) self.bt_AddImagem.setHidden(True) self.bt_DelImagem.setVisible(True) self.cb_CategoriaProduto.setCurrentIndex( self.cb_CategoriaProduto.findData(busca.categoria)) self.cb_MarcaProduto.setCurrentIndex( self.cb_MarcaProduto.findData(busca.marca)) self.tx_EstoqueMinimoProduto.setText(str(busca.estoqueMinimo)) self.tx_EstoqueMaximoProduto.setText(str(busca.estoqueMaximo)) self.tx_ObsProduto.setText(busca.obsProduto) self.tx_ValorCompraProduto.setText(str(busca.valorCompra)) self.tx_ValorUnitarioProduto.setText(str(busca.valorUnitario)) self.tx_ValorAtacadoProduto.setText(str(busca.valorAtacado)) self.tx_MinimoAtacado.setText(str(busca.qtdeAtacado))
def __readImage(self): atts = self.xml.attributes() source = atts.value("source") format = atts.value("format") if len(source) == 0: while (self.xml.readNextStartElement()): if (self.xml.name() == "data"): atts = self.xml.attributes() encoding = atts.value("encoding") data = self.xml.readElementText().toLatin1() if (encoding == "base64"): data = QByteArray.fromBase64(data) self.xml.skipCurrentElement() return QImage.fromData(data, format.toLatin1()) else: self.__readUnknownElement() else: self.xml.skipCurrentElement() source = self.p.resolveReference(source, self.mPath) image = self.p.readExternalImage(source) if (image.isNull()): self.xml.raiseError( self.tr("Error loading image:\n'%s'" % source)) return image return QImage()
def saveImage(self, width, height, dataUrl="", tx=0, ty=0, intermediate=False): image = None if dataUrl: ba = QByteArray.fromBase64(dataUrl[22:].encode("ascii")) if tx or ty: image = QImage() image.loadFromData(ba) else: image = QImage(width, height, QImage.Format_ARGB32_Premultiplied) painter = QPainter(image) self._page.mainFrame().render(painter) painter.end() if tx or ty: img = QImage(width - tx, height - ty, QImage.Format_ARGB32_Premultiplied) painter = QPainter(img) painter.drawImage(tx, ty, image) painter.end() image = img # image to byte array if image: ba = QByteArray() buf = QBuffer(ba) buf.open(QIODevice.WriteOnly) image.save(buf, "PNG") dataType = q3dconst.BIN_INTERMEDIATE_IMAGE if intermediate else q3dconst.BIN_SCENE_IMAGE self.iface.respond(ba.data(), {"dataType": dataType, "renderId": self.renderId}) # q3dconst.FORMAT_BINARY
def __init__(self, title): super(TabbedWindow, self).__init__() self.setMinimumSize(440, 540) self.create_status_bar() self.create_central_widget() self.create_menu() self.shown = False self.qnam = QNetworkAccessManager() self.http_reply = None self.in_manual_update_check = False self.faq_dialog = None self.about_dialog = None geometry = get_config_value('window_geometry') if geometry is not None: qt_geometry = QByteArray.fromBase64(geometry.encode('utf8')) self.restoreGeometry(qt_geometry) self.setWindowTitle(title) if not config_true( get_config_value('allow_multiple_instances', 'False')): self.init_named_pipe()
def display_images(self): global global_user_email global global_process_type global global_selected_name global global_process_image image_strip = global_selected_name.split('/')[-1] image_name = image_strip.split('.')[0] processed_images = client.get_processed_image(global_user_email, image_name, global_process_type) print(processed_images.keys()) label = QLabel(self) s = processed_images[image_name] global_process_image = s data = QByteArray.fromBase64(s.encode()) image_type = image_strip.split('.')[1] upload_sizes = client.get_upload_sizes(global_user_email) upload_size = upload_sizes[image_name] size_string = "Upload Size: " + str(upload_size) upload_times = client.get_upload_time(global_user_email) upload_time = upload_times[image_name] print(upload_time) time_string = "Upload Time: " + upload_time pixmap = QPixmap() if pixmap.loadFromData(data, image_type): pixmap2 = pixmap.scaledToWidth(250) label.setPixmap(pixmap2) label.setGeometry(460, 100, 640, 250) label1 = QLabel(size_string, self) label1.move(455, 30) label1.setMinimumSize(220, 40) label2 = QLabel(time_string, self) label2.move(410, 50) label2.setMinimumSize(290, 40)
def DetalhamentoProduto(self, valor): id = valor self.FormProdutos() self.tx_idProduto.setText(str(id)) busca = CrudProduto() busca.id = id busca.DetalhamentoProdutoId() if hasattr(busca, 'imagem') and busca.imagem: pixmap = QPixmap() pixmap.loadFromData(QByteArray.fromBase64(busca.imagem)) self.lb_FotoProduto.setPixmap( pixmap.scaledToWidth( 200, Qt.TransformationMode(Qt.FastTransformation))) self.bt_AdicionarImagem.setHidden(True) self.bt_DeletarImagem.setVisible(True) self.tx_NomeProduto.setText(busca.produto) self.tx_Descricao.setText(busca.descricao) self.cb_Categoria.setCurrentIndex( self.cb_Categoria.findData(busca.categoria)) self.cb_Marca.setCurrentIndex(self.cb_Marca.findData(busca.marca)) self.tx_QtdMinimoEstoque.setText(str(busca.qtdMinimoEstoque)) self.tx_QtdEstoque.setText(str(busca.qtdEstoque)) self.tx_ValorUnitario.setText(str(busca.valorUnitario)) self.tx_TotalEstoque.setText(str(busca.totalEstoque))
def update_user_list(self): """Функция запроса списка известных пользователей.""" logger.debug( f'Запрос списка известных пользователей {settings.USER_NAME}') self.send_message( Message( **{ settings.ACTION: settings.USERS_REQUEST, settings.USER: settings.USER_NAME, })) response = self.read_data() if response and response.response == 202: with database_lock: lst = [] for username, ava in getattr(response, settings.LIST_INFO, []): user = User.by_name(username=username) if user: if ava: user.avatar = QByteArray.fromBase64( base64.b64decode(ava)) else: user = User(username=username, password='******', avatar=ava) lst.append(user) User.save_all(lst) else: logger.error('Ошибка запроса списка известных пользователей.')
def iconFromBase64(base64): """Read menu icon images from base64 string""" pixmap = QPixmap() pixmap.loadFromData(QByteArray.fromBase64(base64)) icon = QIcon(pixmap) return icon
def SelectEmpresa(self): busca = CrudEmpresa() busca.idEmpresa = self.tx_idEmpresa.text() busca.SelectEmpresaId() self.tx_idEmpresa.setText(str(busca.id)) self.tx_NomeFantasia.setText(busca.nomeFantasia) self.tx_RazaoSocial.setText(busca.razaoSocial) self.tx_Cnpj.setText(str(busca.cnpj)) self.tx_IE.setText(str(busca.inscEstadual)) self.tx_TelefoneEmpresa.setText( self.formatoNumTelefone((busca.telefone))) self.tx_SiteEmpresa.setText(busca.site) self.tx_EmailEmpresa.setText(busca.email) self.tx_ObsEmpresa.setText(busca.obs) self.tx_CepEmpresa.setText(busca.cep) self.tx_Endereco.setText(busca.endereco) self.tx_NumEmpresa.setText(str(busca.numero)) self.tx_BairroEmpresa.setText(busca.bairro) self.tx_CidadeEmpresa.setText(busca.cidade) self.tx_EstadoEmpresa.setText(busca.estado) self.tx_Titulo.setText(busca.titulo) self.tx_SubTitulo.setText(busca.subtitulo) if busca.logo: self.bt_AddLogo.setHidden(True) self.bt_DelLogo.setVisible(True) # print busca.logo pixmap = QPixmap() pixmap.loadFromData(QByteArray.fromBase64( busca.logo)) self.lb_LogoEmpresa.setPixmap(pixmap.scaledToWidth( 300, Qt.TransformationMode(Qt.FastTransformation))) pass
def _decode_qbytearray(data_b64): encoded = base64.b64decode(data_b64) try: from PyQt5.QtCore import QByteArray out = QByteArray.fromBase64(encoded) except ImportError: # pragma: no cover pass return out
def SCR_As_Pixmap(base64_data): _barray = QByteArray() _barray_data = _barray.fromBase64(base64_data.encode("utf-8")) _pixmap = QPixmap () _pixmap.loadFromData(_barray_data, "PNG") return _pixmap
def __init__(self, parent): super(CColorStraw, self).__init__(parent) QFontDatabase.addApplicationFontFromData(QByteArray.fromBase64(FONT)) font = self.font() or QFont() font.setFamily('iconfont') self.setFont(font) self.setToolTip('Нарисуйте цвет экрана') self._scaleWindow = ScaleWindow() # Не забудьте сначала показать его, а затем спрятать. self._scaleWindow.show() self._scaleWindow.hide()
def __init__(self, parent): super(CColorStraw, self).__init__(parent) QFontDatabase.addApplicationFontFromData(QByteArray.fromBase64(FONT)) font = self.font() or QFont() font.setFamily('iconfont') self.setFont(font) self.setText('') self.setToolTip('吸取屏幕颜色') self._scaleWindow = ScaleWindow() # 一定要先显示再隐藏,否则QDialog情况下第一次会卡死 self._scaleWindow.show() self._scaleWindow.hide()
def __init__(self, *args): super(MEMainWindowImpl, self).__init__(*args) self.config = MEIniFile(MYEXPLORER_INI_FILE) self.setupUi(self) self.src_dirs = QStringListModel( self.config.get_section_values(MEIniFile.SRC_DIRS)) self.cbSrcDir.setModel(self.src_dirs) self.dst_dirs = QStringListModel( self.config.get_section_values(MEIniFile.DST_DIRS)) self.cbDstDir.setModel(self.dst_dirs) tmp_filters = self.config.get_section_values(MEIniFile.FILTERS) if len(tmp_filters) == 0: tmp_filters = MEMainWindowImpl.BASE_EXT_FILTERS self.filters = QStringListModel(tmp_filters) self.cbFilterList.setModel(self.filters) params = self.config.get_full_section(MEIniFile.PARAMS) if type(params) is dict: if 'FilterOrdering' in params: self.cbFilterOrdering.setChecked( params.get('FilterOrdering') == "True") else: self.cbFilterOrdering.checked = False if 'YearOrdering' in params: self.cbYearOrdering.setChecked( params.get('YearOrdering') == "True") else: self.cbYearOrdering.checked = False layout = self.config.get_full_section(MEIniFile.LAYOUT) if type(layout) is dict: if 'geometry' in layout: byte_array = bytes(layout['geometry'], 'utf-8') self.restoreGeometry(QByteArray.fromBase64(byte_array)) elif 'PosX' in layout: self.move(layout['PosX'], layout['PosY']) self.resize(layout['Width'], layout['Height']) if 'state' in layout: byte_array = bytes(layout['state'], 'utf-8') self.restoreState(QByteArray.fromBase64(byte_array)) pass
def load_ramps(self): path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "mosaics_caps.json") with open(path) as f: self.ramps = json.load(f) self.ramp_pixmaps = {} for k, v in self.ramps["colors"].items(): base64 = v["icon"][len("data:image/png;base64,"):].encode() byte_array = QByteArray.fromBase64(base64) image = QImage.fromData(byte_array, "PNG") scaled = image.scaled(100, 20) pixmap = QPixmap.fromImage(scaled) self.ramp_pixmaps[k] = pixmap
def SCR_As_Icon(base64_data): _barray = QByteArray() _barray_data = _barray.fromBase64(base64_data.encode("utf-8")) _pixmap = QPixmap () _pixmap.loadFromData(_barray_data, "PNG") _icon = QIcon() _icon.addPixmap(_pixmap) return _icon
def requestImage(self, image_id: int, size: int): """Переопределнный метод QQuickImageProvider для получения картинки. Осуществляется поиск id в хранилище и дальнейше преобразование картинки в байты для загрузки в окно QML. :param image_id: индекс картинки в списке :param size: размер :return: """ for image in self._images: if image["id"] == image_id: image_base64_bytes = QByteArray(image["image"].encode('utf-8')) data = QByteArray.fromBase64(image_base64_bytes) q_image = QImage() q_image.loadFromData(data) return q_image, size
def import_json(self): self.scene.clear() self.scene.lastpos = [] self.scene.polygon = [] self.scene.Polygon_flag = 0 self.scene.Rect_flag = 0 options = self._dlg_file.Options() self.jsonName_, _ = self._dlg_file.getOpenFileName(self, "Read Json", "", "Json Files (*.json);;All Files (*)", options=options) if self.jsonName_ !='': self.import_flag = 1 with open(self.jsonName_, 'r') as reader: jf = json.loads(reader.read()) # to turn string back to byte image_json = jf["image"].encode(encoding="utf-8") ba = QByteArray.fromBase64(image_json) img = QImage.fromData(ba, 'PNG') self.pixmap = QPixmap.fromImage(img) photo = QGraphicsPixmapItem(self.pixmap) self.viewport().installEventFilter(self) self.setGeometry(0, 0, self.pixmap.width() + 10, self.pixmap.height() + 10) self.scene.addItem(photo) if jf["polygon"] != []: all_poly_item = [] for i in jf["polygon"]: single_poly_item = [] for j in i: single_poly_item.append(QPointF(j[0], j[1])) all_poly_item.append(single_poly_item) # TODO: make mainwindow not only show a item, not to get this error "wrapped C/C++ object of type XXXX has been deleted" print("test") self.scene.load_polygon_item(all_poly_item) else: print("no polygon") if jf["rect"] != []: all_rect_item = [] for i in jf["rect"]: single_rect_item = [] for j in i: single_rect_item.append(QPointF(j[0], j[1])) all_rect_item.append(single_rect_item) self.scene.load_rect_item(all_rect_item) else: print("no rect") else: print("no json import")
def doViewImages(self, info): # 截图回调函数 for name, value in info.get('data', {}).items(): try: pixmap = QPixmap() # 从base64加载图 pixmap.loadFromData(QByteArray.fromBase64(value.encode())) # 显示小图 self.textBrowserApi.document().addResource( QTextDocument.ImageResource, QUrl('dynamic:/{0}'.format(name)), pixmap.scaledToHeight(512)) self.textBrowserApi.append( '<img src="dynamic:/{0}">'.format(name)) except Exception as e: self.textBrowserApi.append('<font color=red>{0}</font>'.format( str(e)))
def save(self, fileName, selectedFilter): if selectedFilter == self.filters[1]: img = self.page().mainFrame().evaluateJavaScript("chart.getImageURI()") if img: ba = QByteArray() ba.append(img[22:]) by = QByteArray.fromBase64(ba) image = QImage.fromData(by, "PNG") image.save(fileName) else: QMessageBox.warning(self.parent(), self.tr("Saving"), self.tr("Image not ready. Please try again later")) else: if selectedFilter == self.filters[0]: with open(fileName, 'wb') as f: f.write(bytes(self.html_data, 'utf-8'))
def paintEvent(self, QPaintEvent): if self.connected: try: self.image_base_64 = self.client.recieve_screenshot() except TimeoutError: self.critical("Сервер перестал отвечать") # mb = QMessageBox.critical(self, "Ошибка", "Сервер перестал отвечать") return self.data = QByteArray.fromBase64(self.image_base_64) self.pm = QPixmap() self.pm.loadFromData(self.data, "PNG") self._graphics_scene.clear() self._graphics_scene.addPixmap(self.pm) self.update()
def restoreWrapperState ( self, data, stateFormat, wrapper = None ): newContents = None if wrapper and data[ "name" ]: wrapper.getWidget ().setObjectName ( data[ "name" ] ) if data[ "splitter" ]: newContents = self.restoreSplitterState ( data[ "splitter" ], stateFormat ) elif data[ "area" ]: areaType = QTWMWrapperAreaType.watTabs if data[ "area" ][ "type" ] and data[ "area" ][ "type" ] == "rollup": areaType = QTWMWrapperAreaType.watRollups area = self.createArea ( areaType ) area.restoreState ( data[ "area" ], stateFormat ) if area.count () > 0: newContents = area.getWidget () else: area.deleteLater () if not wrapper: if newContents: wrapper = self.createWrapper () if data[ "name" ]: wrapper.getWidget ().setObjectName ( data[ "name" ] ) else: return None wrapper.setContents ( newContents ) if stateFormat == 1: if data[ "geometry" ]: if not wrapper.getWidget ().restoreGeometry ( data[ "geometry" ] ): print ( "Failed to restore wrapper geometry" ) elif stateFormat == 2: if data[ "geometry" ]: if not wrapper.getWidget ().restoreGeometry ( QByteArray.fromBase64 ( data[ "geometry" ] ) ): print ( "Failed to restore wrapper geometry" ) else: print ( "Unknown state format" ) if data[ "geometry" ]: wrapper.getWidget ().show () return wrapper
def init_ui(self): # set properties icon = QPixmap() icon.loadFromData(QByteArray.fromBase64(APP_ICON)) self.setGeometry(0, 0, 500, 250) self.setWindowIcon(QIcon(icon)) self.setWindowTitle(APP_NAME) # create widgets header = QLabel('STEFANN') header.setAlignment(Qt.AlignCenter) header.setStyleSheet('QLabel {font-size: 80px; font-weight: bold;}') button_image = QPushButton('Open Image') button_paper = QPushButton('About Project') button_about = QPushButton('README') for button in [button_image, button_paper, button_about]: button.setMinimumSize(150, 30) button.setStyleSheet('QPushButton {font-size: 12px;}') # create layout main_widget = QWidget() main_layout = QVBoxLayout() layout_1 = QHBoxLayout() layout_2 = QHBoxLayout() layout_1.addWidget(header) layout_2.addWidget(button_image) layout_2.addWidget(button_paper) layout_2.addWidget(button_about) main_layout.addLayout(layout_1) main_layout.addLayout(layout_2) main_widget.setLayout(main_layout) self.setCentralWidget(main_widget) self.setFixedSize(self.size()) self.move_window_to_center() # set actions button_image.clicked.connect(self.open_image) button_paper.clicked.connect( lambda: webbrowser.open('https://prasunroy.github.io/stefann')) button_about.clicked.connect(lambda: webbrowser.open('readme.html')) return
def restoreSplitterState ( self, data, stateFormat ): if len ( data[ "items" ] ) < 2: print ( "Invalid splitter encountered" ) if len ( data[ "items" ] ) == 0: return None splitter = self.createSplitter () for itemData in data[ "items" ]: itemValue = itemData itemType = itemValue[ "type" ] if itemType == "splitter": w = self.restoreSplitterState ( itemValue, stateFormat ) if w: splitter.addWidget ( w ) elif itemType == "area": area = self.createArea () area.restoreState ( itemValue, stateFormat ) splitter.addWidget ( area.getWidget () ) elif itemType == "rollup": area = self.createArea () area.restoreState ( itemValue, stateFormat ) splitter.addWidget ( area.getWidget () ) else: print ( "Unknown item type" ) if stateFormat == 1: if data[ "state" ]: if not splitter.restoreState ( data[ "state" ] ): print ( "Failed to restore splitter state" ) elif stateFormat == 2: if data[ "state" ]: if not splitter.restoreState ( QByteArray.fromBase64 ( data[ "state" ] ) ): print ( "Failed to restore splitter state" ) else: print ( "Unknown state format" ) return splitter
def decodeLayerData(self, tileLayer, layerData, format): if format in [Map.LayerDataFormat.XML, Map.LayerDataFormat.CSV]: raise _layerData = QByteArray() _layerData.append(layerData) decodedData = QByteArray.fromBase64(_layerData) size = (tileLayer.width() * tileLayer.height()) * 4 if (format == Map.LayerDataFormat.Base64Gzip or format == Map.LayerDataFormat.Base64Zlib): decodedData, size = decompress(decodedData, size) if (size != decodedData.length()): return DecodeError.CorruptLayerData data = decodedData.data() x = 0 y = 0 for i in range(0, size - 3, 4): gid = data[i] | data[i + 1] << 8 | data[i + 2] << 16 | data[i + 3] << 24 result, ok = self.gidToCell(gid) if (not ok): self.mInvalidTile = gid if self.isEmpty(): return DecodeError.TileButNoTilesets else: return DecodeError.InvalidTile tileLayer.setCell(x, y, result) x += 1 if (x == tileLayer.width()): x = 0 y += 1 return DecodeError.NoError
def byteArrayToImage(file): from base64 import b64encode, b64decode from PyQt5.QtGui import QPixmap, QImage from PyQt5.QtCore import QByteArray return QPixmap.fromImage( QImage.fromData(QByteArray.fromBase64(bytes(file, "utf-8"))))
def state(self, val): self.horizontalHeader().restoreState( QByteArray.fromBase64(bytes(val["h_state"], encoding="utf8"))) self.verticalHeader().restoreState( QByteArray.fromBase64(bytes(val["v_state"], encoding="utf8")))
def str_to_bytes(string): """ This is required to save Qt byte arrays into a base64 string (to save screen preferences) """ return QByteArray.fromBase64(string.encode("utf-8"))