欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

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;
	}
}


这样的话我就可以使用压缩过后的图片、从耳避免内存溢出的问题、希望对大家有帮助