代码拉取完成,页面将自动刷新
一键美颜相机
@Author GQ 2018年06月23日
项目中用到水印相机,还要美颜功能,记录一下实现过程,又看了一部分gpuImage文档的图片滤镜
https://github.com/BradLarson/GPUImage
https://github.com/Dean1990/MagicCamera 这个项目没跑起来 - -b
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
}
//不同分辨率导致水印的大小不同(暂未解决)
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
}
你可以在登录后,发表评论
点评 ( 3 )