gpt4 book ai didi

python - pyqt : QPixmap save to StringIO?

转载 作者:行者123 更新时间:2023-11-30 23:39:45 25 4
gpt4 key购买 nike

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

目前我就是这样写的。

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)

最佳答案

您可以通过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())

关于python - pyqt : QPixmap save to StringIO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13302524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com