Android 图像裁剪:输出 x 和输出 y

Posted

技术标签:

【中文标题】Android 图像裁剪:输出 x 和输出 y【英文标题】:Android Image Crop: Output x and Output y 【发布时间】:2016-09-24 03:09:52 【问题描述】:

我已经实现了具有特定输出大小的图像裁剪意图。但是对代码大小所做的更改不会对图像产生任何影响,并且每次更改的输出保持不变。

 private void performCrop(String picUri) 
    try 
        //Start Crop Activity

        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        // indicate image type and Uri
        File f = new File(picUri);
        Uri contentUri = Uri.fromFile(f);

        cropIntent.setDataAndType(contentUri, "image/*");
        // set crop properties
        cropIntent.putExtra("crop", "true");
        // indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        // indicate output X and Y
        cropIntent.putExtra("outputX", 400);
        cropIntent.putExtra("outputY", 400);

        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, RESULT_CROP);
    
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) 
        // display an error message
        String errorMessage = "your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    

输出 x 和 y 值的变化不会影响被裁剪的图像大小。图像尺寸始终保持 160*160。只是当我改变纵横比时,图像大小会发生一些变化。但我需要为 x 和 y 提供特定的尺寸

如果有任何关于图像裁剪的库并且所有设备都支持,那么它会很棒

【问题讨论】:

你为什么不把你的图像视图设置为你想要的尺寸并设置 scaletype=centercrop? 【参考方案1】:

将 aspectX 和 aspectY 设置为 outputX 和 outputY 的比率。

假设您希望结果图像为 200 * 300 像素。然后,只需将 aspectX 设置为 2,将 aspectY 设置为 3。您将获得所需的图像尺寸。这是更新后的代码。

 private void performCrop(String picUri) 
    try 
        //Start Crop Activity

        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        // indicate image type and Uri
        File f = new File(picUri);
        Uri contentUri = Uri.fromFile(f);

        cropIntent.setDataAndType(contentUri, "image/*");
        // set crop properties
        cropIntent.putExtra("crop", "true");
        // indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 2);
        cropIntent.putExtra("aspectY", 3);
        // indicate output X and Y
        cropIntent.putExtra("outputX", 200);
        cropIntent.putExtra("outputY", 300);

        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, RESULT_CROP);
    
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) 
        // display an error message
        String errorMessage = "your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    
    

【讨论】:

以上是关于Android 图像裁剪:输出 x 和输出 y的主要内容,如果未能解决你的问题,请参考以下文章

在 CodeIgniter 中裁剪图像以输出 FPDF

在 UIScrollView 问题中裁剪缩放图像

Android 上的自定义裁剪

裁剪 UIImagePicker 并输出到 CollectionView 单元格

opencv-python:如何用边界框坐标裁剪图像[重复]

PHP Imagick 中的裁剪错误?