使用谷歌照片无法正常工作的作物意图

时间:2017-02-02 08:37:17

标签: android android-crop android-image-capture

我正在尝试制作一个应用程序,从图库或谷歌照片中选择一个图像,然后裁剪它,使其成为我的应用程序背景。我面临的问题是,当我尝试使用谷歌照片裁剪图片然后它被保存,但应用程序背景不会改变,我不会发现任何崩溃或任何错误,但当我使用画廊应用程序裁剪一切似乎完美无缺。

以下是我选择照片的代码:

public void cropCapturedImage(Uri picUri) {
    Intent cropIntent = new Intent("com.android.camera.action.CROP");
    cropIntent.setDataAndType(picUri, "image/*");
    cropIntent.putExtra("crop", "true");
    cropIntent.putExtra("aspectX", 9);
    cropIntent.putExtra("aspectY", 14);
    cropIntent.putExtra("outputX", 256);
    cropIntent.putExtra("outputY", 256);
    cropIntent.putExtra("return-data", true);
    startActivityForResult(cropIntent, CROP_PICTURE);
}

ase CROP_PICTURE: {
            Uri uri = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null);
            if(cursor.moveToFirst()){
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String yourRealPath = cursor.getString(columnIndex);
            } else {
                //boooo, cursor doesn't have rows ...
            }
            cursor.close();
            String v= data.toString();

            if (resultCode == RESULT_OK && null != data) {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Bundle extras = data.getExtras();
                            Bitmap thePic = extras.getParcelable("data");
                            ByteArrayOutputStream baos = new ByteArrayOutputStream();
                            thePic.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                            byte[] b = baos.toByteArray();
                            String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
                            //SharePreference to store image
                            PrefManager.putString(Constant.IMAGE_DATA, encodedImage);
                            //set gallery image
                            setChatBackground();
                        } catch (NullPointerException e) {
                            Log.d(TAG, e.getLocalizedMessage());
                        }
                    }
                });
            }

这是我的cropIntent代码:

anytime

2 个答案:

答案 0 :(得分:1)

不, Android没有裁剪意图

对具有startActivity()操作的Intent调用方法com.android.camera.action.CROP。他们这样做是为了裁剪图像。

这是一个非常糟糕的主意。

Source here - CommonsBlog

enter image description here

答案 1 :(得分:0)

首先尝试记录您的selectedImageUri

我怀疑google照片会返回一个网址文件的网址,而图库应用会返回一个本地文件路径。