1. 程式人生 > >Android用CameraApi實現相機開發以及用opengl es實現相機實時濾鏡

Android用CameraApi實現相機開發以及用opengl es實現相機實時濾鏡

對相機開發一直很感興趣,最近研究了一下自定義相機以及實時濾鏡的實現,寫了個簡單的demo,專案地址,有些地方寫的比較粗糙,但大體功能基本都實現了。大體分為三塊。

1 利用CameraApi實現自定義相機

在camera包路徑下,大體思路就是自定義一個surfaceview,實現surfaceholder的callback,在surfaceCreated回撥方法中開啟相機,關於這方面的開發還是挺多的,這裡就不多說了,介面如圖所示
自定義相機
實現的功能包括觸控對焦,新增水印以及閃光燈和一些系統的濾鏡,
新增水印主要是通過canvas將水印的bitmap畫上去。

2 選擇圖片以及對圖片進行編輯

主要是通過系統的contentprovider獲得圖片路徑,然後通過recyclerview進行展示,圖片編輯是利用colormatrix的api,可以實現修改色度飽和度和亮度的效果,以及通過修改rgb值實現一些簡單的濾鏡效果。

3 利用opengles實現實時濾鏡

這個主意是參考了http://blog.csdn.net/oshunz?viewmode=contents 這位大神的部落格,沒有opengl es基礎的話看起來還是挺費勁的,建議先了解一下基礎再看就舒服多了。我挑了個濾鏡實現了一下,如圖
原圖
冰冷濾鏡
用自定義glsurfaceview,建立surfacetexture然後繫結到利用opengl建立的紋理上,然後在onfame進行渲染即可,濾鏡的原理就是通過建立幀緩衝紋理,然後將濾鏡的實現繫結到該紋理。濾鏡的開發主要是寫片段著色器。從而實現各種濾鏡效果。