2011-08-27 148 views
2

我正在構建一個需要將div導出到圖像的web應用程序。該div將包含圖像,其他div,用css樣式的文本等等。最後,用戶應該有一張圖像,看起來就像他截取了該div的截圖一樣。我查看了服務器端的php庫,但是我沒有看到任何能夠處理呈現的HTML複雜性的東西。 HTML5畫布具有該功能,但我無法爲我的情況使用畫布。有任何想法嗎?將呈現的HTML保存爲圖像

謝謝!

+0

你需要一個瀏覽器來渲染圖像(類似browsershots.org)。然後,您可以使用chrome/ff擴展名拍攝圖像。你甚至可以用Selenium之類的東西在服務器端實現自動化。 – DanJ

+1

> *我不能爲我的情況使用畫布*爲什麼不? –

+0

這個: 測試 不打印任何東西。我不太熟悉,但我假設它只是用於繪製而不是包裝HTML – Mankoun

回答

0

您可以將div標記爲canvas標記,直接訪問像素數據,將其發送到PHP腳本並使用數據構建圖像。

這裏是你如何獲得的像素數據 https://developer.mozilla.org/en/html/canvas/pixel_manipulation_with_canvas

這裏就是你會用什麼用像素 http://php.net/manual/en/function.imagesetpixel.php

+0

這恐怕不行。如果您將任何HTML包裝在畫布標記中,則不會再由DOM呈現它,除非您的瀏覽器不支持畫布。即使要渲染,畫布圖像數據也不受作爲canvas元素的子節點的元素的影響,因此不會使用getImageData()檢索圖像數據,因爲它是空白畫布! –

0

我已經寫了與CSS樣式的畫布轉換HTML的一個項目創建了圖像的像素。

它可以在這裏找到:https://github.com/coolbloke1324/html-to-canvas

和實例測試頁,請訪問:http://www.isogenicengine.com/html-canvas/test/index.html

在測試頁,初始加載只會顯示一個正方形的DIV,裏面坐了一些其他的div各種像背景和包括邊框半徑在內的邊框等風格。您會在頁面右上方看到一個標記爲「渲染」的按鈕。點擊該按鈕,畫布將被創建,然後DOM將被解析並呈現到畫布上。我故意將畫布的背景顏色更改爲黑色,以便您可以看到差異。