def render_to_bytes(self, url): """Renders the image into an object of type 'str'""" format = self.format # this may not be constant due to processEvents() image = self.render(url) qBuffer = QBuffer() image.save(qBuffer, format) return qBuffer.buffer().data()
def render_to_file(self, url, file_object): """Renders the image into a File resource. Returns the size of the data that has been written. """ format = self.format # this may not be constant due to processEvents() image = self.render(url) qBuffer = QBuffer() image.save(qBuffer, format, quality=self.quality) file_object.write(qBuffer.buffer().data()) return qBuffer.size()
def grab_svg(scene): """ Return a SVG rendering of the scene contents. Parameters ---------- scene : :class:`CanvasScene` """ from PyQt4.QtSvg import QSvgGenerator svg_buffer = QBuffer() gen = QSvgGenerator() gen.setOutputDevice(svg_buffer) items_rect = scene.itemsBoundingRect().adjusted(-10, -10, 10, 10) if items_rect.isNull(): items_rect = QRectF(0, 0, 10, 10) width, height = items_rect.width(), items_rect.height() rect_ratio = float(width) / height # Keep a fixed aspect ratio. aspect_ratio = 1.618 if rect_ratio > aspect_ratio: height = int(height * rect_ratio / aspect_ratio) else: width = int(width * aspect_ratio / rect_ratio) target_rect = QRectF(0, 0, width, height) source_rect = QRectF(0, 0, width, height) source_rect.moveCenter(items_rect.center()) gen.setSize(target_rect.size().toSize()) gen.setViewBox(target_rect) painter = QPainter(gen) # Draw background. painter.setBrush(QBrush(Qt.white)) painter.drawRect(target_rect) # Render the scene scene.render(painter, target_rect, source_rect) painter.end() buffer_str = str(svg_buffer.buffer()) return unicode(buffer_str.decode("utf-8"))
def capture_to_buf(self, selector=None): """capture the images of selector to StringIO @param selector: Css selector. @return: The StringIO list. """ images = self.capture(selector) result = [] for image in images: ba = QByteArray() buf = QBuffer(ba) buf.open(QIODevice.ReadWrite) image.save(buf, 'jpg') stream = StringIO(str(buf.buffer())) result.append(stream) return result
def createRequest(self, op, request, outgoingData = None): """ Protected method to create a request. @param op the operation to be performed (QNetworkAccessManager.Operation) @param request reference to the request object (QNetworkRequest) @param outgoingData reference to an IODevice containing data to be sent (QIODevice) @return reference to the created reply object (QNetworkReply) """ if request.url().toString() == "pyrc:home": html = startPage_html pixmap = UI.PixmapCache.getPixmap("ericWeb32.png") imageBuffer = QBuffer() imageBuffer.open(QIODevice.ReadWrite) if pixmap.save(imageBuffer, "PNG"): html.replace("IMAGE_BINARY_DATA_HERE", QString(imageBuffer.buffer().toBase64())) return NetworkReply(request, html.toUtf8(), "text/html", self.parent()) return NetworkProtocolUnknownErrorReply("pyrc", self.parent())
def embed(im): """Converts a QImage or QPicture object into an ipython Image object for embedding into an ipython notebook. """ if isinstance(im, QPicture): pic = im im = QImage(im.width(), im.height(), QImage.Format_ARGB32_Premultiplied) p = QPainter() p.begin(im) p.drawPicture(0, 0, pic) p.end() w = QImageWriter() buf = QBuffer() buf.open(buf.WriteOnly) w.setFormat("png") w.setDevice(buf) w.write(im) return Image(data=str(buf.buffer()), format="png", embed=True)