在爬完网上一篇帖子,并得到其中的所有图片链接后,写一个GUI来实现在线预览是一个很自然的想法, 相当于实现一个python版的图片浏览器, 通过这个练习,可以让我们更熟悉PyQt这个库。
这里我用的是PyQt4。
以下是我的写的程序,可以实现以下几个功能。
预览图片:
实现鼠标左键单击即可下翻至下一张图片,鼠标右键单击则是返回前一张图片。
利用本地Cache来解决反复读取的问题。 比如说对同样的两张图片我们想来回比较,我们没必要每次都重新下载。我们可以将图片保存到本地,当以后调用同一张图片时,直接从本地读取缓存来加速。如果我们不想让外界看到缓存的图片,则可以对其进行加密 (尚未实现)。
对动图gif的支持。普通的 jpg 和 Png 格式,利用QLable 即可以显示,但是对于gif,我们则必须利用QMovie来让其动起来。
由于我刚接触这个库,仍然在学习,所以写的不妥或者冗余的地方,希望大家指出。
# coding=utf-8
import sys
import pycurl
import os
import time
from StringIO import StringIO
import re
from PyQt4 import QtGui,QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
# class definition
class Pic_Label(QtGui.QLabel):
def __init__(self):
super(Pic_Label,self).__init__()
self.setFrameStyle(QtGui.QFrame.StyledPanel)
self.cache_map={}
def paintEvent(self, event):
if self.extention !="gif":
size = self.size()
painter = QtGui.QPainter(self)
point = QtCore.QPoint(0,0)
scaledPix = self.pixmap.scaled(size, Qt.KeepAspectRatio, transformMode = Qt.SmoothTransformation)
# start pai