0

ユーザーが画像を選択するためにギャラリービューを使用しています。ユーザーが画像を選択すると、「クロッピング ページ」に移動します。(これは私が行ったようなカスタム アクティビティではありません)

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true"); 
startActivityForResult(photoPickerIntent, 1);

onActivityResult に戻ると、データが null であり、トリミングされた画像を取得できません。

これを修正する方法を知っている人はいますか?ありがとう!

4

2 に答える 2

0

このコードを使用

private static final String TEMP_PHOTO_FILE = "temporary_holder.jpg";  

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("crop", "true");
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());
photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(photoPickerIntent, REQ_CODE_PICK_IMAGE);

private Uri getTempUri() {
   return Uri.fromFile(getTempFile());
}

private File getTempFile() {

  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

    File file = new File(Environment.getExternalStorageDirectory(),TEMP_PHOTO_FILE);
    try {
        file.createNewFile();
    } catch (IOException e) {}

    return file;
 } else {

    return null;
  }
}

protected void onActivityResult(int requestCode, int resultCode,
    Intent imageReturnedIntent) {

super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

switch (requestCode) {
    case REQ_CODE_PICK_IMAGE:
        if (resultCode == RESULT_OK) {  
            if (imageReturnedIntent!=null) {

                File tempFile = getTempFile();

                String filePath= Environment.getExternalStorageDirectory()
                    +"/"+TEMP_PHOTO_FILE;
                System.out.println("path "+filePath);


                Bitmap selectedImage =  BitmapFactory.decodeFile(filePath);
                _image = (ImageView) findViewById(R.id.image);
                _image.setImageBitmap(selectedImage );

                if (tempFile.exists()) tempFile.delete();
            }
        }
   }       
}

権限を追加

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

ソース

于 2013-04-28T13:23:51.197 に答える