从android中的画廊裁剪图像

时间:2014-01-15 07:13:48

标签: android camera android-camera crop resize-crop

我想从图库中选择一个图像在我的应用程序中裁剪。我从裁剪器裁剪代码工作,但在手机上没有正常工作。我设置outputX = 400并输出Y = 487。 在我的模拟器中,我获得了400 x 487分辨率的输出位图,但是当我从手机图库中裁剪图像时,我获得了145 x 177分辨率的输出位图。为什么会这样?我的裁剪代码如下所示

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

intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);

intent.putExtra("crop", "true");
intent.putExtra("aspectX", 500);
intent.putExtra("aspectY", 750);
intent.putExtra("scale", true);
intent.putExtra("outputX", 400);
intent.putExtra("outputY", 487);
intent.putExtra("return-data", true);
startActivityForResult(Intent.createChooser(intent,"Complete action using"), PICK_FROM_GALLERY);

on onActivityResult

if (requestCode == PICK_FROM_GALLERY) {
Bundle extras2 = data.getExtras();
if (extras2 != null) {
Bitmap bm = extras2.getParcelable("data");
imgview.setImageBitmap(photo);}

2 个答案:

答案 0 :(得分:2)

buttonGallery.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
// call android default gallery
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// ******** code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);

try {

intent.putExtra("return-data", true);
startActivityForResult(Intent.createChooser(intent,
"Complete action using"), PICK_FROM_GALLERY);

} catch (ActivityNotFoundException e) {
// Do nothing for now
}
}
});

或参考这些网站获取更多帮助:

http://www.londatiga.net/featured-articles/how-to-select-and-crop-image-on-android/ http://www.androidhub4you.com/2012/07/how-to-crop-image-from-camera-and.html

答案 1 :(得分:0)

我认为这将解决这个问题。

http://www.londatiga.net/featured-articles/how-to-select-and-crop-image-on-android/

PS:此代码可能适用于所有设备,也可能不适用。这段代码依赖于不属于API的代码。进行裁剪的唯一方法是将代码直接放在您的应用中。