Android拍照_安卓压缩图片_安卓调用摄像头_拍照压缩保存本地
程序员文章站
2022-03-01 16:19:50
...
android 中调用照相功能有两种方法
一种是调用系统自带的camera:能够用Intent直接开启
另一种是利用SurfaceView:能够添加自己想要的功能
今天我要给大家说的就是直接通过调用自带的camera实现拍照并保存到本地
如果不是开发相机等应该、相信这个方法是你最快、实现最简单的方法
放不多说、首先来看一下怎么打开系统自带的相机吧、方法是通过 Intent 来启动自带的相机
protected void showCamera() { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); File tmpFile = new File("要保存的路径", "保存的文件名"); if (tmpFile != null) { Uri outputFileUri = Uri.fromFile(tmpFile); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, REQUEST_CAMERA); } }
这样我们就拍摄了一张照片、并保存到了你指定的目录下面
这里的 startActivityForResult(intent, REQUEST_CAMERA);
意思是当你拍摄了照片之后要做什么处理、也就是当回到上一个画面会执行
protected void onActivityResult(int requestCode, int resultCode, Intent data) { }
这个里面的方法
然而相机拍摄出来的照片一般会很大、如果我们要使用的话还得压缩一下图片
那么我的压缩方式是这样的、大家看一下我的压缩代码
File file = new File("临时图片路径", "临时图片名"); String errorString = null; JSONObject result = new JSONObject(); Bitmap bitmap = null; try { // 获得压缩后的bitmap bitmap = getScalingBitmap("这里是你刚刚保存图片 Uri"); OutputStream outStream = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 70, outStream); outStream.flush(); outStream.close(); } catch (Exception e) { Log.e(TAG, e.toString()); errorString = e.toString(); } finally { if (bitmap != null) { bitmap.recycle(); bitmap = null; } }
这样的话我就可以使用压缩过后的图片、从耳避免内存溢出的问题、希望对大家有帮助