Android 我想裁剪尺寸为 500*500 的图像,它适用于除三星以外的所有设备

Posted

技术标签:

【中文标题】Android 我想裁剪尺寸为 500*500 的图像,它适用于除三星以外的所有设备【英文标题】:Android I want to crop a image in size 500*500,It works on all device but samsung 【发布时间】:2011-12-15 10:14:29 【问题描述】:

作为标题,我想裁剪尺寸为 500*500 的图像, 它适用于大多数设备(如 htc、sonyerrison、motors..),但适用于三星(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);

我挣扎了一会儿~ 请帮忙~

【问题讨论】:

请在下面标记答案,因为它是正确的。另请查看:***.com/questions/12758425/… 了解更多详情 【参考方案1】:

我认为,裁剪后的图像太大了。可以肯定的是,您应该阅读 logcat。

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

直接省略

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

并设置

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

相反。确保 Uri 目标指向一个文件。

【讨论】:

【参考方案2】:

你可以这样改变,你会从onActivityResult()中得到准确的裁剪图像

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

【讨论】:

以上是关于Android 我想裁剪尺寸为 500*500 的图像,它适用于除三星以外的所有设备的主要内容,如果未能解决你的问题,请参考以下文章

href 取决于 ajax 成功或失败

如何在 ffmpeg 中居中裁剪视频缩略图(方形缩略图)?

Html5移动端上传图片并裁剪 - Clipic.js

在 Android 中裁剪以适应图像

在android中选择并裁剪最大尺寸

jcrop宽度,高度通过输入数值调整?