1

从图库中选择图像时,我想在我的应用程序中裁剪图像。我的裁剪代码可以在模拟器上工作,但不能在手机上正常工作。我设置了 outputX=400 和 outputY =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);

在 onActivityResult

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

2 回答 2

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

于 2014-01-15T07:31:13.833 回答
0

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

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

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

于 2014-01-15T08:14:32.140 回答