pyqt:QPixmap保存到StringIO?

2024-10-01 11:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试发布QPixmap图像bia http。为此,我必须让QPixmap保存到临时文件中,并将其作为python文件类读取,执行POST工作。但我认为还有另一种方法可以发布QPixmap。猜猜看,QPixmap保存到StringIO(或其他东西),用它我可以发布。在

现在我就是这样写的。在

from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2, os

tmpIm = "c:/tmpIm.png"
PIXMAP.save(tmpIm, "PNG")
register_openers()
_f = open(tmpIm, "rb")
datagen, headers = multipart_encode({"image": _f})
request = urllib2.Request(UPLOAD_URL, datagen, headers)
_rnt = urllib2.urlopen(request)
_f.close()
os.remove(tmpIm)

Tags: from图像importregisterosrequesturllib2encode
1条回答
网友
1楼 · 发布于 2024-10-01 11:29:26

您可以通过QBufferQPixmap保存到QByteArray,然后将其读入StringIO对象:

from PyQt4.QtCore import QBuffer, QByteArray, QIODevice
from PyQt4.QtGui import QPixmap, QApplication

import cStringIO as StringIO


if __name__ == '__main__':
    # Create a QApplication so that QPixmaps will work.
    app = QApplication([])

    # Load a PNG into a QPixmap.
    pixmap = QPixmap('c:/in.png')

    # Save QPixmap to QByteArray via QBuffer.
    byte_array = QByteArray()
    buffer = QBuffer(byte_array)
    buffer.open(QIODevice.WriteOnly)
    pixmap.save(buffer, 'PNG')

    # Read QByteArray containing PNG into a StringIO.
    string_io = StringIO.StringIO(byte_array)
    string_io.seek(0)

    # Write the StringIO back to a file to test all is ok.
    with open('c:/out.png', 'wb') as out_file:
        out_file.write(string_io.read())

相关问题 更多 >