Android+JNI+OpenGL開發自己的美圖秀秀

代碼地址


網上對於Android相機的開發博文較少,碰巧閒着無聊,遂完成此工程,僅供學習交流,可根據地址中的示例完成類似於美圖秀秀的APP,包含40+種濾鏡與實時美顏與後處理美顏功能。若對您有幫助,點開地址並且點擊右上角的Star。


1.相機預覽模式

示例見:com.seu.magiccamera.activity.CameraActivity

需要自行創建一個glsurfaceview

GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.glsurfaceView);
FrameLayout.LayoutParams params = new LayoutParams(Constants.mScreenWidth, Constants.mScreenHeight);
glSurfaceView.setLayoutParams(params);	
mMagicCameraDisplay = new MagicCameraDisplay(this, glSurfaceView);
通過setFilter(int)來更換濾鏡

拍照採用將圖片繪製到等大小的framebuffer,並讀取像素數據,封裝成Bitmap並保存。


2.照片模式

示例:com.seu.magiccamera.activity.ImageActivity

方法同相機模式,需要通過setImageBitmap(bitmap)來載入圖像。

import com.seu.magicfilter.filter.advance.image

------可調節對比、色調、銳化、曝光、亮度、飽和度6個參數

保存採用將圖片繪製到等大小的framebuffer,並讀取像素數據,封裝成Bitmap並保存。



3.相機輸入:

import com.seu.magicfilter.filter.base.MagicCameraInputFilter

更改GPUImageView中在JNI將YUV轉換RGB的模式,減少時間消耗約20-50ms。

通過surfaceTexture與OpenGL ES綁定獲取紋理id,實現預覽數據與屏幕輸出的綁定

若無濾鏡選擇,將該紋理輸出到屏幕

若有濾鏡選擇,將該紋理輸出到FrameBuffer,之後所有的濾鏡的繪製紋理爲該framebuffertexture。


4.實時美顏濾鏡

import com.seu.magicfilter.filter.advance.common.MagicBeautyFilter

可與MagicCameraInputFilter合併作爲相機輸入層,將每個濾鏡都加上美顏效果

可設置美顏強度(1-5),方法:setBeautyLevel(int level)

參見:Android平臺Camera實時濾鏡實現方法探討(十一)--實時美顏濾鏡


5.其他:

參見:Android平臺Camera實時濾鏡實現方法探討(七)--濾鏡基本製作方法(一)

import com.seu.magicfilter.filter.advance.common.MagicAmaroFilter

------Instagram中Amaro濾鏡

import com.seu.magicfilter.filter.advance.common.MagicAntiqueFilter

------“復古”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicBlackCatFilter

------“黑貓”濾鏡,增強陰影與色調,顏色加深

import com.seu.magicfilter.filter.advance.common.MagicBrannanFilter

------Instagram中Brannan濾鏡

import com.seu.magicfilter.filter.advance.common.MagicBrooklynFilter

------Instagram中Brooklyn濾鏡

import com.seu.magicfilter.filter.advance.common.MagicCalmFilter

------“平靜”濾鏡,偏棕灰

import com.seu.magicfilter.filter.advance.common.MagicCoolFilter

------“冰冷”濾鏡,偏藍

import com.seu.magicfilter.filter.advance.common.MagicEarlyBirdFilter

------Instagram中EarlyBird濾鏡

import com.seu.magicfilter.filter.advance.common.MagicEmeraldFilter

------“祖母綠”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicEvergreenFilter

------“常青”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicFairytaleFilter

------“童話”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicFreudFilter

------Instagram中Freud濾鏡

import com.seu.magicfilter.filter.advance.common.MagicHealthyFilter

------“健康”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicHefeFilter

------Instagram中Hefe濾鏡

import com.seu.magicfilter.filter.advance.common.MagicHudsonFilter

------Instagram中Hudson濾鏡

import com.seu.magicfilter.filter.advance.common.MagicInkwellFilter

------Instagram中Inkwell濾鏡

import com.seu.magicfilter.filter.advance.common.MagicKevinFilter

------Instagram中Kevin濾鏡

import com.seu.magicfilter.filter.advance.common.MagicLatteFilter

------“拿鐵”濾鏡

import com.seu.magicfilter.filter.advance.common.MagicLomoFilter

------Instagram中Lomo濾鏡

import com.seu.magicfilter.filter.advance.common.MagicN1977Filter

------Instagram中N1977濾鏡

import com.seu.magicfilter.filter.advance.common.MagicNashvilleFilter

------Instagram中Nashville濾鏡

import com.seu.magicfilter.filter.advance.common.MagicNostalgiaFilter

------“懷舊”濾鏡,偏綠系

import com.seu.magicfilter.filter.advance.common.MagicPixarFilter

------Instagram中Pixar濾鏡

import com.seu.magicfilter.filter.advance.common.MagicRiseFilter

------Instagram中Rise濾鏡

import com.seu.magicfilter.filter.advance.common.MagicRomanceFilter

------"浪漫"濾鏡,粉紅系

import com.seu.magicfilter.filter.advance.common.MagicSakuraFilter

------"櫻花“濾鏡,粉紅系

import com.seu.magicfilter.filter.advance.common.MagicSierraFilter

------Instagram中Sierra濾鏡

import com.seu.magicfilter.filter.advance.common.MagicSkinWhitenFilter

------”美白“濾鏡,增白皮膚

import com.seu.magicfilter.filter.advance.common.MagicSunriseFilter

------”日出“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicSunsetFilter

------”日落“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicSutroFilter

------Instagram中Sutro濾鏡

import com.seu.magicfilter.filter.advance.common.MagicSweetsFilter

------”甜美“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicTenderFilter

------”溫和“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicToasterFilter

------Instagram中Toaster濾鏡

import com.seu.magicfilter.filter.advance.common.MagicValenciaFilter

------Instagram中Valencia濾鏡

import com.seu.magicfilter.filter.advance.common.MagicWarmFilter

------”溫暖“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicWhiteCatFilter

------”白貓“濾鏡

import com.seu.magicfilter.filter.advance.common.MagicXproIIFilter

------Instagram中XproII濾鏡


6.JNI部分(jni文件夾下):

包含一個磨皮算法與一個美白算法

參見Android平臺Camera實時濾鏡實現方法探討(九)--磨皮算法探討(一)


7.正在編碼部分:

漸暈濾鏡

文字、圖片等與原圖合成

美顏(眼睛、脣部等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章