鍍金池/ 問答/HTML5  C  UI  Linux  HTML/ new Image()對象(src="*.png")怎么讓p

new Image()對象(src="*.png")怎么讓png圖片空白區(qū)域呈透明?

現在需要給canvasdrawImage(img,dx,dy)方法傳遞一個image對象, 供其畫圖用.
但是它默認畫出來的圖片, 周邊本來是透明的區(qū)域, 默認填充了白色.
如下是圖片源:

clipboard.png

繪制完成后的效果:

clipboard.png

效果圖中, 上下兩個圓圈的邊角區(qū)域明顯填充了不透明的白色, 從而遮住了下一層的圓圈.
周邊馬賽克區(qū)域, 需要畫出來后是透明的, 而不是填充了白色
請問, 這種需求怎么實現呢?

部分代碼

新建image對象, 最終會給canvas作圖

var image = new Image();
image.src = "../img/mubiao.png";
...
var ctx = canvas.getContext("2d");
ctx.drawImage(image,dx,dy);
回答
編輯回答
爛人

[問題基本已解決]
圖片的四個白底的角并不是由于canvas的drawImage(img,...)造成的, 也不是因為image本身不透明(png格式, 四個角的確時透明的). 而是在畫圖前, 可能默認會填充一個矩形區(qū)域, 然后才能畫image.
于是, lz采用笨方法: 畫圖前將矩形區(qū)域的長寬設成很小, 至少小于待繪制image的寬高.
最后, 這樣果然可行.

2018年6月17日 12:08
編輯回答
負我心

嘗試了一下,無法復現,透明部分不會自動填充白色。建議給份在線代碼。
另外,我懷疑你保存成的圖片格式可能不是png,那么從ps導出時會自動把透明部分填充成白色。

2018年9月3日 18:42
編輯回答
心沉

沒懂你的透明是什么意思,就是因為透明才看到白色背景啊

2018年3月2日 11:51