In [1]:
import spynner, os, sys
import time
import os
from cStringIO import StringIO
from PyQt4.QtWebKit import QWebSettings
from IPython.html.widgets import ImageWidget, HTMLWidget, IntProgressWidget
from IPython.display import display, Image
from PyQt4.QtCore import QBuffer, QIODevice
from PyQt4.QtGui import QImage
import cv2
import numpy as np
from PIL import Image as PIL_Image
from IPython.display import display, Image
from io import BytesIO
def img_to_png(ima, cvt=None):
    if cvt:
        ima = cv2.cvtColor(ima, cvt)
    im = PIL_Image.fromarray(ima)
    bio = BytesIO()
    im.save(bio, format='png')
    return bio.getvalue()
def display_img_array(ima, cvt=None, **kwargs):
    display(Image(img_to_png(ima, cvt=cvt) , format='png', **kwargs))

In [2]:
debug_stream = StringIO()
browser = spynner.Browser(debug_level=spynner.ERROR, debug_stream=sys.stderr)
browser.create_webview()
browser.show()
settings = browser.webview.settings()
# settings.setAttribute(QWebSettings.AutoLoadImages, False)   # uncomment this if you only need text
browser.webview.setFixedHeight(720)
browser.webview.setFixedWidth(1280)
browser.webview.resize(1280, 720)
settings.setFontFamily(2, u'思源黑体')

In [3]:
url = "file:///home/tjw/src/hualienpy/pyconcn_zhs2.html"

In [66]:
browser.load(url)


Out[66]:
True

In [67]:
for i in range(100):
    browser.webview.repaint()
    browser.sendKeys('body',[ord(' ')])
    time.sleep(1)
    browser.webview.repaint()
    browser.webview.repaint()
    fn = "s"+browser.url[browser.url.find('#/')+2:].replace('/', '_')+".png"
    print fn
    sys.stdout.flush()
    buffer = QBuffer()
    buffer.open(QIODevice.ReadWrite)
    qimg = browser.snapshot().save(buffer, "PNG")
    strio = StringIO()
    strio.write(buffer.data())
    buffer.close()
    strio.seek(0)
    pimg = PIL_Image.open(strio).convert('RGBA')
    new_data = []
    for c in pimg.getdata():
        if max(c[0],c[1],c[2])-min(c[0],c[1],c[2])<10 and c[0] > 128:
            new_data.append((0,0,0,int(385-c[0]*3/2)  ))
        else:
            new_data.append(c)
    pimg.putdata(new_data)
    pimg.save(fn, 'PNG')
    if 'The' in fn:
        break


s1.png
s1_1.png
s1_2.png
s1_3.png
s1_4.png
s1_5.png
s2.png
s2_1.png
s2_2.png
s2_3.png
s2_4.png
s2_5.png
s3.png
s3_1.png
s3_2.png
s3_3.png
s3_4.png
s3_5.png
s3_6.png
s3_7.png
s3_8.png
s4.png
s4_1.png
s4_2.png
s4_3.png
s4_4.png
s4_5.png
s4_6.png
s4_7.png
s4_8.png
s4_9.png
s4_10.png
s4_11.png
sThe.png