2017-03-21 4 views
0

In meinem Code habe ich Null auf Bitmap aber Image erfolgreich erstellt und uri ist in Ordnung, aber BitmapFactory.decodeFile() gibt null zurück.Wie Bild von der Kamera von Fragment in Android bekommen

I verwendet Fragment unter Code:

public class CameraImage extends Fragment { 

private static final int TAKE_PHOTO_CODE = 1888; 
Button button; 
private Uri fileUri1,fileUri; 
ImageView imageView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    final View rootView = inflater.inflate(R.layout.camera_image, 
      container, false); 

    button = (Button) rootView.findViewById(R.id.button); 
    imageView = (ImageView) rootView.findViewById(R.id.imageview); 

    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    fileUri1 = getOutputMediaFileUri(); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
    startActivityForResult(cameraIntent, TAKE_PHOTO_CODE); 

     } 
    }); 

    return rootView; 

} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == TAKE_PHOTO_CODE) { 
     if (resultCode == Activity.RESULT_OK) { 

      BitmapFactory.Options options; 


       try { 
        Bitmap bitmap = BitmapFactory.decodeFile(pathname); 
        showDialog(bitmap, 1); 
       } catch (OutOfMemoryError e) { 
        try { 
         options = new BitmapFactory.Options(); 
         options.inSampleSize = 2; 
         Bitmap bitmap = BitmapFactory.decodeFile(pathname, options); 
         imageView.setImageBitmap(bitmap); 
        } catch (Exception e2) { 
         Log.e("Camera", "" + e2 + " " + e); 
        } 
       } 
     } 
    }   
} } 

public Uri getOutputMediaFileUri() { 
    return Uri.fromFile(getOutputMediaFile()); 
} 

private static File getOutputMediaFile() { 

    File mediaStorageDir = new File(
      Environment 
        .getExternalStoragePublicDirectory(MyApplication.getAppContext().getFilesDir().getAbsolutePath()), 
      IMAGE_DIRECTORY_NAME); 

    if (!mediaStorageDir.exists()) { 
     if (!mediaStorageDir.mkdirs()) { 
      Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create " 
        + IMAGE_DIRECTORY_NAME + " directory"); 
      return null; 
     } 
    } 
    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", 
      Locale.getDefault()).format(new Date()); 
    File mediaFile; 

    try { 
     mediaFile = File.createTempFile(
       "IMG_" + timeStamp, 
       ".jpg",   
       mediaStorageDir  
     ); 
    } catch (Exception e) { 
     Log.e("Camera", "" + e); 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator 
       , "IMG_" + timeStamp + ".jpg"); 
    } 
    return mediaFile; 
} 

In obigem Code I auf Bitmap in onActivityResult null bekam aber ich habe uri von diesem Bild an dieser Stelle vorhanden ist.

Antwort

2

gibt es zwei Arten von Bild ändern können wir über Kamera erhalten:

1) thumbnail image durch die Verwendung unterer Code in onActivityResult:

Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       Log.i(TAG, "" + photo + "/" + data.getExtras().get("data") + "/" + data.getData()); 
       showDialog(photo, 1); 

2) in voller Qualität immage von unten Code in onActivityResult mit:

BitmapFactory.Options options; 
       options = new BitmapFactory.Options(); 
       options.inSampleSize = 2; 
       Bitmap bitmap = BitmapFactory.decodeFile(pathname, options); 
       showDialog(bitmap, 1); 

3) verwenden Dritte einfach und bequem:

Kompilierung 'com.mindorks: paracamera: 0.2.2'

0

löste ich meine Frage:

von cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

zu

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri1); 
+0

nur mein Fehler –

+0

Haben Sie irgendwo eine andere Variable namens 'fileUri'? Es ist nicht in dem Code, den Sie hier gepostet haben. –

+0

@ Code-Apprentice es jetzt überprüfen –

Verwandte Themen