你可以序列化/反序列化JavaScript中的畫布對象?Javascript畫布序列化/反序列化?
10
A
回答
3
您可以通過canvas.getImageData()和.putImageData()獲得直接像素訪問。您也可以使用canvas.toDataURL()將圖像序列化到數據URL以發佈到服務器。
這隻適用於較新的瀏覽器。
14
除了getImageData
方法,您可以使用canvas.toDataURL()
來獲取數據URL編碼的PNG。如果您需要序列化爲一個字符串,則無需手動將原始數據轉換爲字符串。您可以通過創建圖像並將src設置爲數據URL來反序列化,然後將其繪製到畫布上。
[編輯,以考慮異步加載(由olliej建議)。]
function serialize(canvas) {
return canvas.toDataURL();
}
function deserialize(data, canvas) {
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext("2d").drawImage(img, 0, 0);
};
img.src = data;
}
如果我沒有記錯,一些舊版本的Safari,也許歌劇不支持toDataURL
,但較新版本做。
相關問題
- 1. 將畫布內容序列化到ArrayBuffer並反序列化
- 2. 反序列化反序列化接口
- 3. JSON反序列化不反序列化?
- 4. 序列化GWT畫布
- 5. 序列化/反序列化DataContracts列表
- 6. Json.NET:序列化/反序列化陣列
- 7. 將WPF畫布的子項序列化/反序列化到/從XAML文件
- 8. 反序列化
- 9. 反序列化
- 10. 反序列化
- 11. 反序列化
- 12. 反序列化
- 13. 反序列化序列
- 14. boost C++序列化/反序列化
- 15. Kryo序列化/反序列化
- 16. PHP序列化/反序列化錯誤
- 17. java序列化和反序列化
- 18. 序列化/反序列化SIPDIalog
- 19. 序列化/反序列化System.RuntimeType
- 20. 火腿不序列化+反序列化
- 21. Android序列化 - java反序列化
- 22. Joda ISODateTimeFormat序列化/反序列化
- 23. 序列化和反序列化
- 24. 日曆序列化反序列化
- 25. Spring Remoting序列化和反序列化
- 26. Android HashMap序列化/反序列化
- 27. WPF XAML序列化/反序列化
- 28. WCF序列化和反序列化
- 29. J2ME:JSON序列化/反序列化
- 30. GeometryDrawing序列化/反序列化
從技術上說,圖像不能保證同步加載,所以你應該真的在圖像處理器 – olliej 2009-04-20 07:40:38