예제 #1
0
 def getImageBytes(img):
     ba = QByteArray()
     buff = QBuffer(ba)
     buff.open(QIODevice.WriteOnly)
     img.save(buff, "png")
     img_bytes = ba.data()
     return img_bytes
예제 #2
0
    def getCachedImage(self, project, request, key):
        m = hashlib.md5()
        paramMap = request.parameters()
        urlParam = "&".join(
            ["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
        m.update(urlParam.encode('utf8'))

        if not os.path.exists(
                os.path.join(self._tile_cache_dir,
                             m.hexdigest() + ".png")):
            return QByteArray()

        img = QImage(m.hexdigest() + ".png")
        with open(os.path.join(self._tile_cache_dir,
                               m.hexdigest() + ".png"), "rb") as f:
            statusOK = img.loadFromData(f.read())
            if not statusOK:
                print(
                    "Could not read or find the contents document. Error at line %d, column %d:\n%s"
                    % (errorLine, errorColumn, errorStr))
                return QByteArray()

        ba = QByteArray()
        buff = QBuffer(ba)
        buff.open(QIODevice.WriteOnly)
        img.save(buff, 'PNG')
        return ba
예제 #3
0
파일: writers.py 프로젝트: nurenda/QTiles
    def writeTile(self, tile, image, fileFormat, quality):
        data = QByteArray()
        buff = QBuffer(data)
        image.save(buff, fileFormat, quality)

        self.cursor.execute('''INSERT INTO tiles(zoom_level, tile_column, tile_row, tile_data) VALUES (?, ?, ?, ?);''', (tile.z, tile.x, tile.y, sqlite3.Binary(buff.data())))
        buff.close()
예제 #4
0
 def __init__(self, handler: RequestHandler) -> None:
     super().__init__()
     self._handler = handler
     self._buffer = QBuffer()
     self._buffer.open(QIODevice.ReadWrite)
     self._numbytes = 0
     self._finish = False
def to_png(image):
    """ Get as PNG
    """
    imgbuf = QBuffer()
    imgbuf.open(QIODevice.ReadWrite)
    image.save(imgbuf, "PNG")
    # Return a QByteArray
    return imgbuf.data()
예제 #6
0
    def getImage(self):
        """ Return the loaded image """
        if self.isDefault:
            return None

        pix = self.orignalimage
        by = QByteArray()
        buf = QBuffer(by)
        buf.open(QIODevice.WriteOnly)
        pix.save(buf, "JPG")
        return by
예제 #7
0
    def writeTile(self, tile, image):
        if tile.z != self._zoom:
            self._initZoomLayer(tile.z)

        data = QByteArray()
        buff = QBuffer(data)
        image.save(buff, 'PNG')

        mmap_name = '/vsimem/' + uuid4().hex
        gdal.FileFromMemBuffer(mmap_name, data.data())
        gdal_dataset = gdal.Open(mmap_name)
        data = gdal_dataset.ReadRaster(0, 0, self.tile_width, self.tile_height)
        gdal_dataset = None
        gdal.Unlink(mmap_name)

        xoff = (tile.x - self._first_tile.x) * self.tile_width
        yoff = (tile.y - self._first_tile.y) * self.tile_height
        self._zoomDs.WriteRaster(xoff, yoff, self.tile_width, self.tile_height, data)
예제 #8
0
    def send(self):
        buf = QBuffer()
        patchbytes = bytes('OPTIONS', 'UTF-8')
        verb = QByteArray(patchbytes)
        # Switch to get the appropriate function to process the request
        switch = {
            'get':
            self.manager.get,
            'options':
            lambda request: self.manager.sendCustomRequest(request, verb, buf),
            'head':
            self.manager.head,
            'put':
            self.manager.put
        }

        access_method = switch.get(self.method.lower())

        reply_command = lambda: access_method(self.request)
        reply = Reply(reply_command, self.url)

        return reply
예제 #9
0
 def __init__(self):
     QgsServerResponse.__init__(self)
     self._buffer = QBuffer()
     self._buffer.open(QIODevice.ReadWrite)
예제 #10
0
def make_buffer(obj):
    data = QByteArray(make_payload(obj))
    buffer = QBuffer()
    buffer.setData(data)
    buffer.open(buffer.ReadOnly)
    return buffer