Android我想裁剪500 * 500大小的图像,它适用于所有设备,但三星

时间:2011-12-15 10:14:30

标签: android android-intent crop

作为标题,我想裁剪尺寸为500 * 500的图像, 它适用于大多数设备(如htc,sonyerrison,motor ..),但三星(Sii / Ace ......)。

实际上,三星设备可以在360 * 360上工作,但是当我调整到500 * 500时。

当我放

时,行为很奇怪
 intent.putExtra("outputX", 500);
 intent.putExtra("outputY", 360);
 startActivityForResult(intent,PHOTORESOULT),

它的神经回到onActivityResult()

以下是裁剪代码,我确信uri中有一个图像

    public void startPhotoZoom(Uri uri) {

             Bitmap bitmap =null;
    try {
        bitmap = MediaStore.Images.Media.getBitmap(
                this.getContentResolver(), uri);
        Log.v("cropImage","Heigh="+bitmap.getHeight()+" Width="+bitmap.getWidth());
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    int width=bitmap.getWidth();
    int height=bitmap.getHeight();

    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    if(width < 500 || height < 500){
        if(width <= height){
            intent.putExtra("outputX", width); 
            intent.putExtra("outputY", width);
            Log.v("cropImage","outputX="+width+" outputY="+width);
        }else{
            intent.putExtra("outputX", height); 
            intent.putExtra("outputY", height);
            Log.v("cropImage","outputX="+height+" outputY="+height);
        }
    }else{
        intent.putExtra("outputX", 360);
        intent.putExtra("outputY", 360);
    }

    intent.putExtra("noFaceDetection", true);
    intent.putExtra("scale", true);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, PHOTORESOULT);
}

我挣扎了一会儿〜 请帮助〜

2 个答案:

答案 0 :(得分:6)

我认为,裁剪的图像太大了。要确定你应该阅读logcat。

我有同样的问题,太大的图像不会传递给onActivityResult,并且必须让裁剪的图像保存到磁盘然后单独加载它。

简单地省略

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

并设置

 Uri destination;
 // some code to retriev an valid Uri
 intent.putExtra(MediaStore.EXTRA_OUTPUT, destination);

代替。确保Uri目标指向文件。

答案 1 :(得分:-1)

你可以这样改变,你将从onActivityResult()获得精确的裁剪图像

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