Android+JNI+OpenGL開發自己的美圖秀秀
網上對於Android相機的開發博文較少,碰巧閒著無聊,遂完成此工程,僅供學習交流,可根據地址中的示例完成類似於美圖秀秀的APP,包含40+種濾鏡與實時美顏與後處理美顏功能。若對您有幫助,點開地址並且點選右上角的Star。
1.相機預覽模式
示例見:com.seu.magiccamera.activity.CameraActivity
需要自行建立一個glsurfaceview
通過setFilter(int)來更換濾鏡GLSurfaceView glSurfaceView = (GLSurfaceView)findViewById(R.id.glsurfaceView); FrameLayout.LayoutParams params = new LayoutParams(Constants.mScreenWidth, Constants.mScreenHeight); glSurfaceView.setLayoutParams(params); mMagicCameraDisplay = new MagicCameraDisplay(this, glSurfaceView);
拍照採用將圖片繪製到等大小的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)
5.其他:
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資料夾下):
包含一個磨皮演算法與一個美白演算法
7.正在編碼部分:
漸暈濾鏡
文字、圖片等與原圖合成
美顏(眼睛、脣部等)