本文章主要討論的是如何將一個純色二維碼變成彩色的。
前段時間公司業(yè)務上有這么一個需求,客戶不喜歡后臺生成的純色二維碼,純藍,純紫,純綠都不行,想要彩色二維碼。然后這個任務都落到我頭上了,因為是圖片處理,那主要思路就是靠canvas,canvas可以進行像素操作,所以我進行了一些嘗試,也踩了一點小坑,具體記錄如下。
前置知識
drawImage方法可以把圖片畫到canvas上,getImageData方法可以獲得一個矩形區(qū)域所有像素點的信息,返回值的data屬性是一個一維數(shù)組,儲存了所有像素點的信息,一個像素點的信息會占四個元素,分別代表r,g,b和透明度。而像素點在一維數(shù)組中的順序是從左到右,從上到下。最后就是putImageData方法,把更改過的像素信息數(shù)組重新扔回畫布上。
一些小坑
第一個坑就是canvas用屬性去給寬高,別用css;
第二個坑,做圖片處理好像得服務器環(huán)境,本地是不行的,聽說是基于什么安全考慮,最后我是通過搭本地服務器解決了canvas的報錯。
第三個坑,棧溢出,這個目前還沒找到原因,后面會詳細講