的Manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature
android:name="android.hardware.camera2"
android:required="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
按钮OnClickListner
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
getFileUri();
i.putExtra(MediaStore.EXTRA_OUTPUT, file_uri);
startActivityForResult(i, 10);
}
});
getFileUri()
private void getFileUri() {
image_name = "testing123.jpg";
file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+ File.separator + image_name);
file_uri = Uri.fromFile(file);
}
OnActivityResult()
if(requestCode == 10 && resultCode == RESULT_OK){
bitmap = BitmapFactory.decodeFile(file_uri.getPath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] array = stream.toByteArray();
encoded_string = Base64.encodeToString(array, 0);
}
首先,有许多类似的问题,但没有一个适用于我的情况。
我试图在拍照后将图像发送到我的服务器,但我遇到了BitmapFactory.decodeFile()的问题。问题是它返回null,即使我的图库中存在拍摄的图片。我认为真正的问题是我的照片大小;它通常在3.0 MB到5.0 MB之间。但是,我无法确定,因为它没有告诉我为什么它不能被解码。
答案 0 :(得分:0)
尝试使用以下代码
找到媒体存储的绝对Uri Cursor c=getContentResolver().query(file_uri.getData(),new String[]{MediaStore.Images.Media.DATA},null,null,null);
c.moveToFirst();
String path=c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA));
BitmapFactory.decodeFile(path);