Android 如何裁剪不基于屏幕大小的图像?

Android 如何裁剪不基于屏幕大小的图像?,android,size,wallpaper,Android,Size,Wallpaper,我最近问了一个问题,我想,我理解我的问题()。当我裁剪该区域时,它会采用该区域的大小(足够小),当我将其设置为墙纸时,它会增加大小,并降低质量。因此,我确信我必须在这里改变一些事情: public void performCrop(Uri picUri, int width, int height){ try { utils = new Utils(getApplicationContext()); int height1, width1;

我最近问了一个问题,我想,我理解我的问题()。当我裁剪该区域时,它会采用该区域的大小(足够小),当我将其设置为墙纸时,它会增加大小,并降低质量。因此,我确信我必须在这里改变一些事情:

public void performCrop(Uri picUri, int width, int height){
    try {
        utils = new Utils(getApplicationContext());
        int height1, width1;
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        height1 = size.y;
        width1 = size.x;


        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        //indicate image type and Uri
        cropIntent.setDataAndType(picUri, "image/*");
        //set crop properties
        cropIntent.putExtra("crop", "true");

        //indicate aspect of desired crop
        cropIntent.putExtra("aspectX", width1*5);
        cropIntent.putExtra("aspectY", height1*5);
        //indicate  X and Y
        cropIntent.putExtra("outputX", width);
        cropIntent.putExtra("outputY", height);
        //retrieve data on return
        cropIntent.putExtra("return-data", true);
        //start the activity - we handle returning in onActivityResult

        startActivityForResult(cropIntent, 1);

    }
    catch(ActivityNotFoundException anfe){
        //display an error message
        String errorMessage = "Whoops - your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

有人能帮我吗?如果可能的话,请显示代码。

因此,我是一名IOS开发人员,但我可能会给你一个答案,你需要考虑当你允许用户或你自己裁剪图像时,你在做什么,你应该限制裁剪图像到用户设备的最大值(屏幕宽度、屏幕高度),以便它总是看起来漂亮。这意味着图像只能裁剪这么多。在CLang或Java中,没有一种高效的算法可以将裁剪后的图像放大到“好看”的程度。不管别人怎么说,“放大”一张图片总是让它看起来像sh%t。此外,你为什么不看看这个:是的,但是android系统的裁剪器应用程序,不允许我缩放图片等等。有什么想法吗?是的,你不必缩放图像,我假设你可以创建一个“过度”的相机或一个信息,在这里你可以将裁剪限制到某个维度。例如,在IOS中,我可以获得用户的Iphone高度和宽度的值,然后根据Iphone的尺寸确定该特定用户的裁剪区域。这就是我要说的,你不需要缩放图像,不需要放大任何东西,只允许在一定的高度/宽度范围内进行裁剪。基本上,我要说的是,你应该允许裁剪到android手机的最大屏幕大小。这意味着所有使用此图像的设备都会缩小此图像的尺寸,使其适合用作壁纸,并且始终保持良好的外观,但是如果您从一个小屏幕大小的手机上裁剪图像,那么这些图像在较大的安卓设备上就不太好看。因此,我是一名IOS开发人员,但我可能会为您提供某种答案,当您允许用户或您自己裁剪图像时,您需要考虑您正在做什么,您应该限制将图像裁剪到用户设备的最大值(屏幕宽度、屏幕高度),以使其始终看起来美观。这意味着图像只能裁剪这么多。在CLang或Java中,没有一种高效的算法可以将裁剪后的图像放大到“好看”的程度。不管别人怎么说,“放大”一张图片总是让它看起来像sh%t。此外,你为什么不看看这个:是的,但是android系统的裁剪器应用程序,不允许我缩放图片等等。有什么想法吗?是的,你不必缩放图像,我假设你可以创建一个“过度”的相机或一个信息,在这里你可以将裁剪限制到某个维度。例如,在IOS中,我可以获得用户的Iphone高度和宽度的值,然后根据Iphone的尺寸确定该特定用户的裁剪区域。这就是我要说的,你不需要缩放图像,不需要放大任何东西,只允许在一定的高度/宽度范围内进行裁剪。基本上,我要说的是,你应该允许裁剪到android手机的最大屏幕大小。这意味着所有使用此图像的设备都会缩小此图像的大小,使其适合用作壁纸,并且始终保持良好的外观,但如果您从一个小屏幕大小的手机上裁剪图像,则这些图像在较大的Android设备上就不好看了