簡體   English   中英

HTML5畫布圖像緩存/ putImageData問題

[英]HTML5 canvas image caching/putImageData questions

我正在使用HTML5畫布加載圖像的單個實例,然后我將其多次blit到一個畫布上。 圖像需要一些輕微的基於像素的操作才能對其進行自定義。 我最初的攻擊計划是加載圖像,將其blit到支持畫布,在其上繪制我的修改,然后抓取圖像數據並將其緩存以備將來使用。

這是我寫的一些代碼:

context.drawImage(img, 0, 0);
context.fillStyle = '#ffffff';
context.fillRect(0, 0, 2, 2);  // Draw a 2x2 rectangle of white pixels on the top left of the image

imageData = context.getImageData(0, 0, img.width, img.height);
cusomImage = imageData;

雖然這有效,但我注意到我的圖像(透明的PNG)不能保持透明度。 相反,當使用putImageData將其放置在我的前置畫布上時,它將以黑色背景呈現。 我如何保持透明度?

歡迎任何建議!

putImageData()沒有按照你的預期做到: http ://dropshado.ws/post/1244700472/putimagedata-is-a-complete-jerk

putImageData()直接覆蓋畫布的像素。 因此,如果您在同一畫布上繪制其他內容,它將不會“覆蓋”它,而是用它的像素替換該區域中畫布的像素。

我遇到了這個問題,終於找到了原因。

至於解決方案,我還沒有嘗試過,但它看起來很有希望: 為什么putImageData這么慢?

[編輯]:我測試了這個方法,它對我來說很好,我的數據現在正確顯示透明度。

畫布在創建后是黑色的。 首先使其透明:

context.fillStyle = 'rgba(0,0,0,0)';
context.fillRect(0, 0, width, height);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM