最近使用Intent调用系统的拍照功能,并用onActivityResult方法中的data得到照片的bitmap,但是发现获取的照片资源是被压缩过的,而且被压缩的很小,那么如何得到未被压缩的原图片并按照自己的需要进行压缩呢?
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File("your file path");
Uri uri = Uri.fromFile(file);
// 获取拍照后未压缩的原图片,并保存在uri路径中
intentPhote.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 2000);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 2000 && resultCode == Activity.RESULT_OK) {
//由于存储的是原图太大所以需要做一下处理
InputStream iStream = getContentResolver().openInputStream("your uri");
byte[] inputData = getBytes(iStream);
}
}
public byte[] getBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
return byteBuffer.toByteArray();
}
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(requestCode == 2000 && resultCode == Activity.RESULT_OK) {
- Bitmap bitmap = getBitmapFromUrl(getPhotopath(), 313.5, 462.0);
- saveScalePhoto(bitmap);
- mImage.setImageBitmap(bitmap);
- }
- }