2017-08-11 107 views
0

所以我使用Highcharts.js生成SVG圖表。我將它轉換爲PNG,然後在我的頁面上顯示爲img。但由於某種原因,當我嘗試複製新圖像時,該粘貼爲空。如何複製/粘貼base64圖像?

$("#export").click(function() { 
var svg = $("#chart").find('svg')[0]; 
var svgSize = svg.getBoundingClientRect(); 
var svgData = new XMLSerializer().serializeToString(svg); 

var img = document.createElement('img'); 
document.querySelector('#image').src = 'data:image/svg+xml;base64,' + btoa(unescape(encodeURIComponent(svgData))) 

});

我可以在新選項卡中打開圖像,但沒有右鍵單擊複製選項。我可以保存圖像。但由於某種原因,我無法獲得副本?

編輯:我實際上沒有使用畫布。這是爲了別的。我做了一些更多的研究,並且幾年前我看到了一個關於如何不能複製二進制數據圖像/ base64圖像的stackoverflow。有沒有圍繞它的解決方案?

這裏是一個示例JSFiddle。 https://jsfiddle.net/lauralindy/8x9ob2v3/

+0

那是因爲你被它渲染到畫布上。一旦被繪製到畫布上,它就會成爲畫布的一部分,因爲它是在即時模式下繪製的 - 在繪製之後將對參考的引用刪除。 – Korgrue

+0

是否可以創建一個最小的jsfiddle或類似的? –

+0

SVG是和基於XML的圖像格式,這意味着它是代碼。如果您想複製SVG,您可以檢查該元素並複製整個'svg'標籤。否則,您需要將其轉換爲不同的格式,例如(jpg,gif,png),然後複製它。 –

回答

0

您可以複製從base64字符串創建的圖像。看看下面的例子。點擊'添加來自base64字符串的圖片'將圖片添加到正文標籤,右鍵點擊圖片,複製圖片,打開一些圖片編輯器並粘貼圖片。

例子:
http://jsfiddle.net/8j8p2uyk/