我使用Bokeh軟件包生成地圖以顯示模擬結果。輸出是具有交互性的html格式的單獨地圖。交互性是個別地圖所必需的。Python打開html文件,截取屏幕截圖,裁剪並保存爲圖像
請參閱此鏈接的示例:
http://bokeh.pydata.org/en/0.10.0/docs/gallery/texas.html
仿真可以被自動設置爲運行的次數和將產生的地圖爲每次運行。這可能是100張地圖。我希望能夠將地圖縫合在一起以創建電影 - 交互性不是必需的。 Bokeh具有通過瀏覽器創建PNG文件的功能,因此可以手動將每個地圖保存爲文件並使用ffmpeg創建電影。但是,如果您需要爲100個文件執行此操作,則這不是一個真正的選項。目前無法通過Bokeh自動生成PNG文件,但我相信它會在某些時候添加。
所以我需要一個解決方法。我的想法是從他們存儲在本地驅動器上的位置打開每個html文件,拍攝屏幕截圖,裁剪圖像以保留所需的部分並保存。但我還沒有找到可行的解決方案。
裁剪圖像很簡單:
from PIL import Image
img = Image.open(file_name)
box = (1, 1, 1000, 1000)
area = img.crop(box)
area.save('saved_image', 'jpeg')
我的問題是打開HTML文件,並採取截屏擺在首位喂到上面的代碼。
爲此,我嘗試了以下操作,但都需要一個URL而不是html文件。也都使用Firefox不起作用,但我已經安裝了Chrome並適當地更改了代碼。
How to take partial screenshot with Selenium WebDriver in python?
此http://www.idiotinside.com/2015/10/20/take-screenshot-selenium-python/
我的代碼是:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('file_name')
driver.save_screenshot('image.png')
driver.quit()
將返回:
{"code":-32603,"message":"Cannot navigate to invalid URL"}
顯然文件名不是一個URL,這樣是明確的。如果你通過它的網站,它工作正常。任何幫助獲得一個HTML加載和拍照將不勝感激!它不必涉及硒。
是什麼操作系統,你運行? – zhqiat
Ubuntu 14.04和Windows。 – Pete
我希望一個散景的人有一個方法給你;但我會建議使用Qt的qwebview渲染你的HTML,並抓住窗口形象http://stackoverflow.com/questions/24413385/pyqt4-qwidget-save-as-image – mdurant