我目前正在開發一個mozilla擴展,試圖加載一個用數據URI編碼的圖像(PNG),在畫布元素上繪製它,最終改變一些像素值並將其保存爲磁盤上的文件。javascript canvas.toDataURL與原始數據URI相比的變化
我注意到的奇怪之處在於,即使我不更改圖像上的任何內容,並且只是在畫布上繪製圖像並使用canvas.toDataURL()查看生成的內容,但此編碼數據不同從原來的。
我使用的是看這是非常基本的代碼:
var image = new Image();
image.onload = function() {
var canvas = document.createElement('canvas')
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext('2d').drawImage(image, 0, 0);
var data = canvas.toDataURL(); // this right here is different from image.scr data!
}
image.src = "data:image/png;base64," + encodedData;
我假設有某種壓縮或可能是一些涉及到透明膠片回事。
我檢查了the documentation但找不到解釋。 我想我看到一些顏色正在改變成其他一些相似的顏色,這可能是我想達到的目標(即改變一些像素值)。
關於正在發生的事情的任何想法?
如果沒有,有沒有人知道是否有任何其他方式將畫布圖像保存到磁盤上的文件,而無需使用toDataURL方法? 可能是XPCOM組件能夠保存PNG二進制格式的所有像素?
感謝
我測試過,即使數據URI是不同的,如果我創建一個新的圖像加載從toDataURI得到的這個新的數據URI,當我得到圖像數據:'imageData = canvas.getContext('2d')。getImageData(0,0,canvas.width,canvas.height );'兩者是相同的,並且像素似乎具有相同的值。這怎麼可能? – sagar38 2011-04-08 02:02:31