是否有一個用於將SVG轉換爲支持字體元素的HTML畫布的好庫?我已經嘗試過canvg,但它不支持Font。在支持字體元素的HTML5畫布上繪製SVG
回答
支持HTML5 Canvas的瀏覽器也很好地支持SVG。因此,你可以這樣做:
var img = new Image;
img.onload = function(){ myCanvasContext.drawImage(img,0,0); };
img.src = "foo.svg";
唯一的缺點這種方法是,如果SVG是你的域之外的畫布將成爲污點;如果這是您的目標,您將無法使用getImageData()
來讀取所產生的SVG。
,我已經把我的服務器上這種技術的一個例子:http://phrogz.net/tmp/canvas_from_svg.html
我測試過這一點,並驗證了它的工作原理(和看起來一樣)上IE9,Chrome的V11B,Safari瀏覽器V5和Firefox 4版。
[編輯]需要注意的是:
Chrome和Firefox目前的安全 '平底船',並從閱讀畫布(如these have been fixedgetImageData()
或toDataURL()
)繪製 任何 SVG後不允許你畫布(不管域名)Firefox目前有一個錯誤e除非SVG指定了
height
和width
屬性,否則它拒絕將SVG繪製到畫布上。
如果你已經在SVG嵌入到HTML或作爲原料源可以使用一個數據的URL到SVG轉換爲您然後可以在畫布上繪製一個HTML圖像元素:
var img = new Image();
// here attach an onload handler that draws the image on the canvas
// svgSource is the raw svg xml
img.src = "data:image/svg+xml," + encodeURIComponent(svgSource);
請注意,對於複雜的SVG內容,可能會遇到數據的大小限制:URI - 在我的情況下,這意味着我沒有除了使用canvg來繪製複雜的SVG之外的其他選項。 – 2014-08-01 09:34:30
我剛試過一個簡單的img標籤,Phrogs的方法和canvg。我的SVG有一個嵌入式PNG。這隻適用於canvg。其他人展示了沒有嵌入PNG的圖像。這是在Android Jellybean上使用標準瀏覽器或Chrome。
- 1. html5動畫畫布已繪製元素
- 2. 在畫布上繪製SVG
- 3. 在畫布上繪製旋轉元素
- 4. 在控制檯上繪製HTML5畫布
- 5. 在HTML5的畫布上繪製圖像
- 6. HTML5畫布繪製
- 7. 繪製到畫布%元素
- 8. 在隱藏的html5畫布元素中繪製不起作用
- 9. HTML5 - 超時後在畫布上繪製
- 10. 在HTML5畫布上繪製虛線?
- 11. 在HTML5畫布上繪製圖像
- 12. 在HTML5畫布上繪製視頻
- 13. 在html5畫布上繪製圖像
- 14. 繪製單個像素線HTML5畫布
- 15. 如何在html5畫布上繪製圓柱體
- 16. 加快在HTML5畫布元素上繪製多個點的步驟
- 17. HTML5畫布繪製拖放
- 18. 連續繪製HTML5畫布
- 19. html5畫布繪製/保存
- 20. HTML5畫布繪製圖像
- 21. JavaScript拖動繪製的畫布元素
- 22. HTML5支持哪些元素?
- 23. 在畫布上繪製像素橢圓
- 24. 打印HTML5畫布元素
- 25. HTML5畫布元素樣式?
- 26. 瞭解HTML5畫布元素
- 27. 移動HTML5畫布元素
- 28. 定位HTML5畫布元素
- 29. 在HTML5畫布上繪製CSS圓角文字
- 30. 在HTML5畫布上繪製旋轉文字
這不適用於firefox – Nilesh 2011-05-02 19:00:45
@Nilesh什麼操作系統和FireFox的版本?它適用於我在Windows 7上使用FF4.0。 – Phrogz 2011-05-02 19:45:55
我在JavaScript中有一個svg作爲字符串。我使用它像'img.src =「data:image/svg + xml,」+ svgString;'它使用chrome,但firefox拒絕解析'svgString'變量,因爲我嵌入了CDATA樣式。 更新:使用encodeURIComponent(svgString)解決 – arunkjn 2013-11-21 13:17:39