在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:BeautyCamera开源软件地址:https://gitee.com/madaigou/BeautyCamera开源软件介绍:BeautyCamera项目介绍一键美颜相机
效果图
使用gpuImage的滤镜实现相机预览
gpuImage = GPUImage(this)gpuImage?.setGLSurfaceView(surfaceView)magicFilterGroup = GPUImageFilterGroup()magicFilterGroup?.addFilter(GPUImageBeautyFilter())noMagicFilterGroup = GPUImageFilterGroup()noMagicFilterGroup?.addFilter(GPUImageFilter())//设置滤镜gpuImage?.setFilter(if (isInMagic) magicFilterGroup else noMagicFilterGroup)
<android.opengl.GLSurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="match_parent" />
parameters.setPictureSize(pictureSize.width, pictureSize.height)
parameters.setPreviewSize(closelySize.width, closelySize.height)
//连续对焦if (parameters.supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) { parameters.focusMode = Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE} 使用Camera.parameters设置
设置水印
//不同分辨率导致水印的大小不同(暂未解决)private fun getView2Bitmap(): Bitmap { ll_waterMarker!!.isDrawingCacheEnabled = true var waterBitmapCache = ll_waterMarker.drawingCache var waterBitmap = Bitmap.createBitmap(waterBitmapCache, 0, 0, ll_waterMarker.width, ll_waterMarker.height) ll_waterMarker.destroyDrawingCache() var oriBitmap = (iv_img.drawable as BitmapDrawable).bitmap var newb = Bitmap.createBitmap(oriBitmap.width, oriBitmap.height, Bitmap.Config.ARGB_8888); var canvas = Canvas(newb) canvas.drawBitmap(oriBitmap, 0f, 0f, null) canvas.drawBitmap(waterBitmap, 0f, (oriBitmap.height - waterBitmap.height).toFloat() - SizeUtil.dp2px(this, 40f), null) canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); return newb}
//截取layout保存图片,会有黑边private fun getScreenPhoto(waterPhoto: RelativeLayout?): Bitmap { waterPhoto!!.isDrawingCacheEnabled = true waterPhoto.buildDrawingCache() var bitmap: Bitmap? = waterPhoto.drawingCache val width = waterPhoto.width val height = waterPhoto.height val bitmap1 = Bitmap.createBitmap(bitmap!!, 0, 0, width, height) waterPhoto.destroyDrawingCache()return bitmap1} 更多请查看demo |
请发表评论