1、获取调用摄像头权限
2、创建一个File用来保存照片,获取图片地址
val imageFile = File(externalCacheDir,"output_image.jpg")
if(imageFile.exists){
imageFile.delete()
}
imageFile.creatNewFile()
//获取图片地址
val imaguri = if(Build.VERSION.SDK_INT >= Build.VERSION_COD.N){
FileProvider.getUriForFile(this,"com.centling.e03_activitytest.fileprovider",imageFile )
}else{
URI.fromFile(imageFile)
}
val intent = Intent("android.media.action.IMAGE_CAPTURE")
intent.put(MediaStore.EXTRA_OUTPUT,imageUri)
startActivityResult(intent,1)
拍摄完成后的回调
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode){
1->{
if(resultCode == Activity.RESULT_OK){
val Bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(imageUri))
iv_pic.setImageBitmap(Bitmap)
}
}
}
}
如果图片翻转需要调用方法将图片修正
fun rotateifrequired(bitmap: Bitmap) :Bitmap{
val exifInterface = ExifInterface(outputImage.path)
val orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL)
return when (orientation){
ExifInterface.ORIENTATION_ROTATE_90 -> rotateImager(bitmap,90)
ExifInterface.ORIENTATION_ROTATE_180 -> rotateImager(bitmap,180)
ExifInterface.ORIENTATION_ROTATE_270 -> rotateImager(bitmap,270)
else -> bitmap
}
}
fun rotateImager(bitmap: Bitmap,degree :Int) :Bitmap{
val matrix = Matrix()
matrix.postRotate(degree.toFloat())
val newbitmap = Bitmap.createBitmap(bitmap,0,0,bitmap.width,bitmap.height,matrix,true)
bitmap.recycle()
return newbitmap
}
网友评论