java如何让图像符合大小,java – 如何限制选择的大小图像

我的问题是消耗内存,我需要限制所选图像的大小.

编辑

加载后我不需要调整图像大小,我可以使用调整图像大小

Bitmap.createScaledBitmap(image, (int) 80, (int) 80, true);

我需要阻止用户选择图像> 5 MB

我的代码

public void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == RESULT_OK) {

if (requestCode == SELECT_PICTURE) {

Uri selectedImageUri = data.getData();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

限制大小文件夹不是它是更好的选择.

我用这个方法解决了我的问题:

public boolean MaxSizeImage(String imagePath) {

boolean temp = false;

File file = new File(imagePath);

long length = file.length();

if (length < 1500000) // 1.5 mb

temp = true;

return temp;

}

如果需要imagePath,可以使用此方法

public String getImagePath(Uri uri){

Cursor cursor = getContentResolver().query(uri, null, null, null, null);

cursor.moveToFirst();

String document_id = cursor.getString(0);

document_id = document_id.substring(document_id.lastIndexOf(":")+1);

cursor.close();

cursor = getContentResolver().query(

android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);

cursor.moveToFirst();

String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));

cursor.close();

return path;

}

解决方法:

试试这个Hackro:D

第一:

public static final int PICK_IMAGE = 1;

private void takePictureFromGalleryOrAnyOtherFolder()

{

Intent intent = new Intent();

intent.setType("image/*");

intent.setAction(Intent.ACTION_GET_CONTENT);

startActivityForResult(Intent.createChooser(intent, "Select Picture"),PICK_IMAGE);

}

然后:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (resultCode == Activity.RESULT_OK) {

if (requestCode == PICK_IMAGE) {

Uri selectedImageUri = data.getData();

String imagePath = getRealPathFromURI(selectedImageUri);

//Now you have imagePath do whatever you want to do now

}//end of inner if

}//end of outer if

}

public String getRealPathFromURI(String contentURI) {

Uri contentUri = Uri.parse(contentURI);

String[] projection = { MediaStore.Images.Media.DATA };

Cursor cursor = null;

try {

if (Build.VERSION.SDK_INT > 19) {

// Will return "image:x*"

String wholeID = DocumentsContract.getDocumentId(contentUri);

// Split at colon, use second item in the array

String id = wholeID.split(":")[1];

// where id is equal to

String sel = MediaStore.Images.Media._ID + "=?";

cursor = context.getContentResolver().query(

MediaStore.Images.Media.EXTERNAL_CONTENT_URI,

projection, sel, new String[] { id }, null);

} else {

cursor = context.getContentResolver().query(contentUri,

projection, null, null, null);

}

} catch (Exception e) {

e.printStackTrace();

}

String path = null;

try {

int column_index = cursor

.getColumnIndex(MediaStore.Images.Media.DATA);

cursor.moveToFirst();

path = cursor.getString(column_index).toString();

cursor.close();

} catch (NullPointerException e) {

e.printStackTrace();

}

return path;

}

标签:java,android,android-intent

来源: https://codeday.me/bug/20190623/1270927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值