Android實(shí)現(xiàn)圖片疊加功能
前幾天工作碰到這樣一個(gè)需求,將二維碼與一張海報(bào)疊加,并將合成后的海報(bào)分享到微信。由于經(jīng)驗(yàn)不足,在實(shí)現(xiàn)功能的過程中,碰到了這樣或那樣的問題,我就來分享一下我碰到的坑。
一.圖片疊加的處理
處理思路是在一張新建畫布上分別將兩張圖片繪制出來
1.首先獲取需要兩張圖片,并轉(zhuǎn)成Bitmap類型
Bitmapbg = ((BitmapDrawable) getResources().getDrawable( R.drawable.background)).getBitmap(); Bitmapfg = ((BitmapDrawable) getResources().getDrawable( R.drawable.foreground)).getBitmap();
2.創(chuàng)建一張大小和背景圖一致的位圖
intbgWidth=bg.getWidth(); intbgHeight=bg.getHeight(); intfgWidth=fg.getWidth(); //前景圖寬度,用于后面計(jì)算前景圖的繪制坐標(biāo)
/*這里不詳細(xì)解釋RGB_565和RGB_8888,RGB_6666的區(qū)別,我是因?yàn)楹髞矸窒淼轿⑿诺倪^程中,發(fā)現(xiàn)圖片過大,就盡量讓圖片更小,值得一提的是,我有試過RGB_6666,發(fā)現(xiàn)getConfig()圖片的參數(shù)并沒有變化,看了源碼才知道,即使是選擇RGB_6666,也會(huì)被轉(zhuǎn)成RGB_8888,應(yīng)該是畫質(zhì)太慘目忍睹了,Google便放棄了RGB_6666了*/
Bitmapnewbmp=Bitmap.createBitmap(bgWidth,bgHeight,Bitmap.Config.RGB_565);
3.新建畫布,并畫出背景圖和前景圖
Canvascv=newCanvas(newbmp); //drawbginto //在0,0坐標(biāo)開始畫入bg cv.drawBitmap(bg,0,0,null); //drawfginto //開始畫入fg,可以從任意位置畫入,具體位置自己計(jì)算 cv.drawBitmap(fg,(bgWidth-fgWidth)/2,bgHeight/4*3-500,null);
二.圖片壓縮處理
在使用微信sdk分享圖片的過程中,發(fā)現(xiàn)圖片過大會(huì)導(dǎo)致微信拉起失敗,處理思路是將縮放至原來的一半,圖片占用內(nèi)存自然就減少了,是不是簡(jiǎn)單粗暴呀
Matrixmatrix=newMatrix(); matrix.setScale(0.5f,0.5f); Bitmap compbmp=Bitmap.createBitmap(newbmp,0,0,newbmp.getWidth(), newbmp.getHeight(),matrix,true);
三.最終效果
以上所述是小編給大家介紹了Android圖片疊加功能代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android App使用RecyclerView實(shí)現(xiàn)上拉和下拉刷新的方法
RecyclerView一經(jīng)推出便被認(rèn)為是替代ListView的存在,那么ListView的上拉和下拉刷新我們同樣可以使用RecyclerView來做到,這里我們就來看一下Android App使用RecyclerView實(shí)現(xiàn)上拉和下拉刷新的方法,首先先來點(diǎn)RecyclerView的小介紹:2016-06-06Android開發(fā)之PopupWindow創(chuàng)建彈窗、對(duì)話框的方法詳解
這篇文章主要介紹了Android開發(fā)之PopupWindow創(chuàng)建彈窗、對(duì)話框的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android使用PopupWindow創(chuàng)建對(duì)話框相關(guān)操作技巧,需要的朋友可以參考下2019-03-03Android之聯(lián)系人PinnedHeaderListView使用介紹
Android聯(lián)系人中的ListView是做得比較獨(dú)特的,這幾天,我把他提取出來了,寫成一個(gè)簡(jiǎn)單的例子,留著備用,感興趣的朋友可以參考下哈2013-06-06Android webview和js互相調(diào)用實(shí)現(xiàn)方法
這篇文章主要介紹了 Android webview和js互相調(diào)用實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2016-10-10Android連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作示例講解
這篇文章主要介紹了Android 連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作示例講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08