我目前正在嘗試創建一個帶有動態生成圖像的頁面,這些圖像不是形狀,而是繪製到畫布中以創建動畫。在JavaScript中手動創建圖像並對alpha通道進行繪製?
我嘗試的第一件事是執行以下操作:
//create plenty of those:
var imageArray = ctx.createImageData(0,0,16,8);
//fill them with RGBA values...
//then draw them
ctx.putImageData(imageArray,x,y);
的問題是,圖像被重疊和putImageData
簡單地把...中的數據的上下文中,沒有對於alpha通道作爲
:在W3C指定0像素在畫布替換批發,沒有組合物,α混合,無陰影等
所以我想,我怎樣才能使用Image
s而不是ImageData
s?
我試圖找到一種方法將ImageData
對象實際放回到圖像中,但它似乎只能放在畫布上下文中。因此,作爲最後的手段,我嘗試使用16x8畫布(我的圖像大小)的toDataURL()
方法,並將結果保存爲我的〜600圖像的src
。
結果是美麗的,但吃了我的CPU的100%...(它沒有與putImageData
,約5%cpu)我的猜測是,由於某些未知的原因,圖像重新從每次繪製數據URI時都要使用image/png
......但那會很奇怪......不是嗎?它似乎比我以前的技術需要更多的內存。
因此,我不知道如何實現我的目標。
如何在JavaScript中動態創建Alpha通道圖像,然後在畫布上以可觀的速度繪製它們?
使用Java小程序是唯一真正的選擇嗎?
謝謝你的時間。
SVG創建我的圖像?或應用alpha蒙版?我不確定如何做到這一點。至於自己實現繪圖函數,afaik背後的代碼是本地代碼,所以我不認爲我可以真正做到這一點。或以像素爲單位操縱整個畫布像素陣列?它會很慢... – Manux 2010-11-07 14:22:17
Manux:你覺得它很慢嗎?至少V8(在Google Chrome中使用)afaik在執行JavaScript之前將其編譯爲本機代碼。 – thejh 2010-11-07 14:26:40
我正在使用chrome;我剛剛嘗試過,速度很慢,但比使用URI更快。我想我必須破解這樣的事情。 – Manux 2010-11-07 15:26:07