简体   繁体   English

在Android 4.4中从图库中选择图像时裁剪图像

[英]Cropping image while selecting it from gallery in Android 4.4

I am trying to provide crop facility to image picked from gallery ,it works fine except Android 4.4.How to solve this problem? 我正在尝试为从图库中选取的图像提供裁剪工具,除了Android 4.4以外,它都可以正常工作。如何解决此问题? i am using following code 我正在使用以下代码

This is how i am calling gallery intent based on Android version 这就是我基于Android版本调用图库意图的方式

ImageView ivGallery = (ImageView) pop.findViewById(R.id.ivGallery);
                ivGallery.setOnClickListener(new OnClickListener()
                {
                    @SuppressLint("InlinedApi")
                    @Override
                    public void onClick(View v)
                    {
                        if (Build.VERSION.SDK_INT < 19)
                        {
                            Intent intent = new Intent();
                            pop.dismiss();
                            intent.setType("image/*");
                            intent.setAction(Intent.ACTION_GET_CONTENT);
                            intent.putExtra("crop", "true");
                            intent.putExtra("return-data", true);
                            intent.putExtra("aspectX", 300);
                            intent.putExtra("aspectY", 300);
                            intent.putExtra("outputX", 300);
                            intent.putExtra("outputY", 300);

                            startActivityForResult(intent, StaticMembers.galleryRequestCode); //1=gallery
                        }
                        else
                        {
                            picUri = ImageUtils.getTempUri();
                            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                            intent.addCategory(Intent.CATEGORY_OPENABLE);
                            intent.setType("image/*");
                            intent.putExtra(MediaStore.EXTRA_OUTPUT, picUri);
                            pop.dismiss();
                            startActivityForResult(intent, StaticMembers.GALLERY_KITKAT_INTENT_CALLED);
                        }

                    }
                });

This is my onActivityResult 这是我的onActivityResult

@SuppressLint("NewApi")
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == StaticMembers.galleryRequestCode && resultCode == Activity.RESULT_OK)
        {
            Utils.deleteTempFolder();
            Bundle extras = data.getExtras();
            try
            {
                Thread.sleep(2000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            bmp = extras.getParcelable("data");
            thumbBitmap = Bitmap.createScaledBitmap(bmp, 100, 100, true);
            imgdp.setImageBitmap(bmp);
            setConfirmPicDialog();
        }
        else if (requestCode == StaticMembers.GALLERY_KITKAT_INTENT_CALLED && resultCode == Activity.RESULT_OK)
        {
            Log.d("kitkat", "Inside onActivity result for kitkat");
            picUri = data.getData();
            performCrop(); //what is to be done here?



        }



    }

    private void performCrop()
    {
        try
        {
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            cropIntent.setDataAndType(picUri, "image/*");
            cropIntent.putExtra("crop", "true");
            cropIntent.putExtra("return-data", true);
            cropIntent.putExtra("aspectX", 300);
            cropIntent.putExtra("aspectY", 300);
            cropIntent.putExtra("outputX", 300);
            cropIntent.putExtra("outputY", 300);
            startActivityForResult(cropIntent, StaticMembers.galleryRequestCode);
        }
        catch (ActivityNotFoundException anfe)
        {
            String errorMessage = "Whoops - your device doesn't support the crop action!";
            Toast toast = Toast.makeText(UserInfoActivity.this, errorMessage, Toast.LENGTH_SHORT);
            toast.show();
        }
    }

What changes should be done in above code in order to have crop intent in Android 4.4 为了在Android 4.4中具有裁剪意图,应在上述代码中进行哪些更改

It is not a good practice to use Gallery's crop functionality. 使用Gallery的裁剪功能不是一个好习惯。 It is missing in some firmwares, so app may even crash in some cases. 在某些固件中缺少它,因此在某些情况下应用甚至可能崩溃。

Instead you can use this library android-cropimage 相反,您可以使用此库android-cropimage

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM