我需要做一個SVG出口png圖片function.First我產生SVG爲Base64,但以base64 code`type是SVG + XML,然後canvas.toDataUrl返回「data :;」當cavans.width /高度過大
var image=new Image();
image.src=base64Code;
image.onload = function() {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = image.width;
canvas.height = image.width;
context.drawImage(image, 0, 0);
png = canvas.toDataURL("image/png",1);
}`
我cavans .width/height可能會非常大,然後我使用cavans.toDataURL
返回"data:;"
。當cavans.width/height爲normal時,可以生成。有沒有什麼好辦法來解決這個問題?或者使用java讓svg + xml代碼生成爲.png?
當你說非常大,它有多大?大於這些[最大大小](http://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element)?如果是這樣,是的,不要使用畫布。否則,您可以嘗試['canvas.toBlob'](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob)方法,這在理論上會減少內存影響,因此應該能夠返回更大的圖像。但是,如果您能夠提供服務器端轉換,那麼使用它就可以獲得比使用javascript更好的效果。 – Kaiido
所以'toBlob'和'toDataURL'具有相同的限制(在我的Chrome上16380 * 16380左右,我的FF上大約11150 * 11150)。但有一件有趣的事情是,對於'toDataURL',chrome不會返回你得到的字符串,而FF不會拋出'NSIndexError',對於'toBlob',chrome在回調函數中返回null,而FF甚至不執行回調,也不會引發任何錯誤... – Kaiido
我tryed使用蠟染生成SVG文件到png文件或SVG代碼png文件,但在我的SVG,它有標籤,該標籤具有標籤,當我生成svg 不顯示 –