Ich verwende das Bokeh-Paket, um Karten zu generieren, um die Ergebnisse einer Simulation anzuzeigen. Die Ausgabe besteht aus einzelnen Karten im HTML-Format mit Interaktivität. Die Interaktivität wird für einzelne Karten benötigt.Python HTML-Datei öffnen, Screenshot erstellen, zuschneiden und als Bild speichern
Siehe diesen Link für ein Beispiel:
http://bokeh.pydata.org/en/0.10.0/docs/gallery/texas.html
Die Simulation automatisch mehrfach eingestellt werden kann laufen und eine Karte für jeden Durchlauf erzeugen. Dies könnte Hunderte von Karten sein. Ich würde gerne die Karten zusammenfügen, um einen Film zu erstellen - die Interaktivität ist dafür nicht erforderlich. Bokeh verfügt über Funktionen zum Erstellen von PNG-Dateien über den Browser, so dass es möglich ist, jede Karte manuell als Datei zu speichern und mit ffmpeg einen Film zu erstellen. Dies ist jedoch nicht wirklich eine Option, wenn Sie es für Hunderte von Dateien tun müssen. Derzeit gibt es keine Möglichkeit, PNG-Dateien über Bokeh automatisch zu generieren, aber ich glaube, dass es irgendwann hinzugefügt wird.
Also brauche ich eine Abhilfe. Mein Gedanke ist, jede HTML-Datei von dem Ort zu öffnen, auf dem sie auf dem lokalen Laufwerk gespeichert sind, einen Screenshot zu machen, das Bild zu beschneiden, um den erforderlichen Abschnitt zu behalten und zu speichern. Aber ich habe noch keine Lösung gefunden, die funktioniert.
Beschneiden eines Bildes ist einfach:
from PIL import Image
img = Image.open(file_name)
box = (1, 1, 1000, 1000)
area = img.crop(box)
area.save('saved_image', 'jpeg')
Mein Problem der HTML-Datei öffnet und den Screenshot in erster Linie unter dem obigen Code einzuspeisen.
Dafür habe ich Folgendes versucht, aber beide erfordern eine URL anstelle einer HTML-Datei. Auch beide benutzen Firefox, der für mich nicht funktioniert, aber ich habe Chrome installiert und den Code entsprechend geändert.
How to take partial screenshot with Selenium WebDriver in python?
http://www.idiotinside.com/2015/10/20/take-screenshot-selenium-python/
für diese Mein Code ist:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file_name')
driver.save_screenshot('image.png')
driver.quit()
Welche zurück:
{"code":-32603,"message":"Cannot navigate to invalid URL"}
eindeutig ein Dateiname nicht eine URL ist, so dass klar ist. Es funktioniert gut, wenn Sie eine Website übergeben. Jede Hilfe bei der Erstellung eines HTML-Dokuments und einer Aufnahme wäre sehr willkommen! Es muss Selen nicht beinhalten.
Welches Betriebssystem laufen Sie? – zhqiat
Ubuntu 14.04 und Windows. – Pete
Ich würde hoffen, dass ein Bokeh Person eine Methode für Sie hat; aber ich würde empfehlen, qt's qwebview verwenden, um Ihre HTML zu rendern, und greifen Sie das Fensterbild http://StackOverflow.com/Questions/24413385/pyqt4-qwidget-save-as-image – mdurant