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

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

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

clipboard.png

繪制完成后的效果:

clipboard.png

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

部分代碼

新建image對(duì)象, 最終會(huì)給canvas作圖

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

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

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

嘗試了一下,無(wú)法復(fù)現(xiàn),透明部分不會(huì)自動(dòng)填充白色。建議給份在線代碼。
另外,我懷疑你保存成的圖片格式可能不是png,那么從ps導(dǎo)出時(shí)會(huì)自動(dòng)把透明部分填充成白色。

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

沒(méi)懂你的透明是什么意思,就是因?yàn)橥该鞑趴吹桨咨尘鞍?/p>

2018年3月2日 11:51