android 本地图片选择,android选择本地图片并裁剪

本文使用Android原生的选择和裁剪功能。下面是代码:

public class PickAndCropActivity extends AppCompatActivity implements View.OnClickListener

{

public static final int REQUEST_CODE_PICK_IMG = 1;

public static final int REQUEST_CODE_CROP_IMG = 2;

/**

* ImageView展示选择的图片和裁剪得到的图片

*/

private ImageView img;

/**

* 选择得到的图片uri

*/

private Uri mUri;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_pick_and_crop);

img = (ImageView) findViewById(R.id.img);

}

@Override

public void onClick(View v)

{

switch (v.getId())

{

case R.id.pick:

startActivityForResult(IntentUtils.generatePickImgIntent(), REQUEST_CODE_PICK_IMG);

break;

case R.id.crop:

startActivityForResult(IntentUtils.generateCropImgIntent(mUri, 150), REQUEST_CODE_CROP_IMG);

break;

}

}

@Override

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

{

switch (requestCode)

{

case REQUEST_CODE_PICK_IMG:

if (resultCode != RESULT_OK || data == null) break;

mUri = data.getData();

ContentResolver cr = this.getContentResolver();

try

{

Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(mUri));

img.setImageBitmap(bitmap);

} catch (FileNotFoundException e)

{

e.printStackTrace();

}

break;

case REQUEST_CODE_CROP_IMG:

if (resultCode != RESULT_OK || data == null) break;

Bitmap bmap = data.getParcelableExtra("data");

img.setImageBitmap(bmap);

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

}

中间用到的IntentUtils类:

public class IntentUtils

{

/**

* 构造一个选择图片的Intent

*

* @return

*/

public static Intent generatePickImgIntent()

{

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType("image/*");

return intent;

}

/**

* 构造一个裁剪图片的Intent

*

* @param uri

* @param size

* @return

*/

public static Intent generateCropImgIntent(Uri uri, int size)

{

Intent intent = new Intent("com.android.camera.action.CROP");

// mUri是已经选择的图片Uri

intent.setDataAndType(uri, "image/*");

intent.putExtra("crop", "true");

// 裁剪框比例

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

// 输出图片大小

intent.putExtra("outputX", size);

intent.putExtra("outputY", size);

intent.putExtra("return-data", true);

return intent;

}

}

原文:http://www.cnblogs.com/hsji/p/5116797.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值