2017-09-28 7 views
0

J'utilise le code suivant pour créer un fichier image et les enregistrer pour carte SDEnregistrer l'image de la caméra sans être redimensionnées

private File createImageFile(Bitmap bitmap) throws IOException { 
     File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
     File image = File.createTempFile(
       PICNAME, 
       ".png", 
       storageDir); 
     FileOutputStream out = null; 
     try { 
      out = new FileOutputStream(image); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return image; 
    } 

Le problème est que, si je prends l'image en mode plein écran, mais le code ci-dessus enregistre toujours l'image en très peu de dimension, soit 320x240. pourquoi donc .. est-il par tous les moyens que je peux enregistrer l'image sans redimensionner?

+0

Votre fonction permet d'enregistrer une image bitmap dans un fichier. Et personne ne sait d'où vient le bitmap. Votre code n'a rien à voir avec la prise de vue avec l'appareil photo. – greenapps

+0

Il ne lancera jamais une IOException lorsque vous l'attraperez. – greenapps

Répondre

1

vous pouvez le faire comme ceci:

public static Uri takePhotoByCamera(Activity activity) { 
    File publicDirectory = Environment 
      .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/myFolder"); 
    double d = new Random().nextDouble(); 
    File file = new File(publicDirectory, d + ".jpg"); 
    String path = file.getAbsolutePath(); 
    ContentValues values = new ContentValues(); 
    values.put(MediaStore.MediaColumns.DATA, path); 
    values.put(MediaStore.MediaColumns.TITLE, "New Picture"); 
    values.put(MediaStore.Images.ImageColumns.DESCRIPTION, "From your Camera"); 
    activity.getContentResolver().insert(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
    Uri photoUri = Uri.parse("file://" + path); 
    if (!publicDirectory.exists()) 
     publicDirectory.mkdirs(); 
    else if (!publicDirectory.isDirectory() && publicDirectory.canWrite()) { 
     publicDirectory.delete(); 
     publicDirectory.mkdirs(); 
    } else { 
     Log.d("tag550", "can't access"); 
    } 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
    activity.startActivityForResult(intent, requestCamera); 
    return photoUri; 
}