QImage: URL 而不是文件路径?
QImage: URL instead of file path?
此代码将光栅像素图分配给标签。
我可以简单地读取一个本地文件,而不是生成一个文件:
img = QtGui.QImage('/Users/user/Desktop/photo.jpg')
我想知道是否有办法指定 URL link 而不是文件路径?那么 QLabel
会直接从网络上获取它的像素图吗?
from PyQt4 import QtCore, QtGui
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
if not QtGui.QApplication.instance():
app=QtGui.QApplication([])
window = QtGui.QWidget()
window.setLayout(QtGui.QVBoxLayout())
img = QtGui.QImage(32, 32, QtGui.QImage.Format_RGB32)
img.fill(QtCore.Qt.red)
pixmap = QtGui.QPixmap(img)
lbl = QtGui.QLabel()
lbl.setPixmap(pixmap)
icon = QtGui.QIcon(pixmap)
window.layout().addWidget(lbl)
window.show()
sys.exit(app.exec_())
据我所知,没有直接的方法让 QImage 或 QPixMap 直接从 URL 加载数据。但是您可以通过首先从 URL 中提取数据,然后将其加载到 QPixMap 来绕过它。
从URL获取数据:
import urllib2
url_data = urllib2.urlopen(path).read()
现在将其加载到您的 QPixMap 中:
pixmap = QPixmap()
pixmap.loadFromData(url_data)
lbl.setPixmap(pixmap)
值得一提的是,您应该尝试捕获 urllib2.URLError
这样的异常
或 InvalidURL
,处理 URL 受保护 (https) 等的情况。
此代码将光栅像素图分配给标签。 我可以简单地读取一个本地文件,而不是生成一个文件:
img = QtGui.QImage('/Users/user/Desktop/photo.jpg')
我想知道是否有办法指定 URL link 而不是文件路径?那么 QLabel
会直接从网络上获取它的像素图吗?
from PyQt4 import QtCore, QtGui
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
if not QtGui.QApplication.instance():
app=QtGui.QApplication([])
window = QtGui.QWidget()
window.setLayout(QtGui.QVBoxLayout())
img = QtGui.QImage(32, 32, QtGui.QImage.Format_RGB32)
img.fill(QtCore.Qt.red)
pixmap = QtGui.QPixmap(img)
lbl = QtGui.QLabel()
lbl.setPixmap(pixmap)
icon = QtGui.QIcon(pixmap)
window.layout().addWidget(lbl)
window.show()
sys.exit(app.exec_())
据我所知,没有直接的方法让 QImage 或 QPixMap 直接从 URL 加载数据。但是您可以通过首先从 URL 中提取数据,然后将其加载到 QPixMap 来绕过它。
从URL获取数据:
import urllib2
url_data = urllib2.urlopen(path).read()
现在将其加载到您的 QPixMap 中:
pixmap = QPixmap()
pixmap.loadFromData(url_data)
lbl.setPixmap(pixmap)
值得一提的是,您应该尝试捕获 urllib2.URLError
这样的异常
或 InvalidURL
,处理 URL 受保护 (https) 等的情况。