Faible qualité d'image / image lors de la capture de la caméra

J'ai un problème. Lorsque j'essaie d'obtenir une image de la caméra, la qualité est très faible. Tout d'abord, capturez l'image à l'aide d'une caméra, enregistrez dans le répertoire et, en même temps, obtenez cette image et montrez dans mon application. L'image enregistrée à l'intérieur du répertoire est une qualité fine, mais lorsque je l'ai depuis le répertoire, la qualité est faible. Ci-dessous est mon exemple de code:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == CAMERA_PIC_REQUEST) { Bitmap thumbnail = (Bitmap) intent.getExtras().get("data"); if (g==1) { ImageView myImage = (ImageView) findViewById(R.id.img5); myImage.setImageBitmap(thumbnail); View a = findViewById(R.id.img5); a.setVisibility(View.VISIBLE); ByteArrayOutputStream stream = new ByteArrayOutputStream(); thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, stream); byteArray1 = stream.toByteArray(); } } 

Toute solution / suggestion? Merci 🙂

  • Ajout d'un enfant dans GestureOverlayView sur le point où j'ai touché sur Android?
  • Système de positionnement intérieur basé sur le gyroscope et l'accéléromètre
  • Comment obtenir le nombre de mails Gmail non lus (sur Android)
  • Période d'image apparaissant même après Ellipsize dans Android textView
  • Événements retardés sur Android
  • Erreur de compilation Maven d'en-tête invalide pour Android support-v4
  • Résolu

    Le problème résolu quand je suis le code donné par Antrromet ci-dessous

    2 Solutions collect form web for “Faible qualité d'image / image lors de la capture de la caméra”

    J'ai utilisé le code suivant et cela fonctionne parfaitement pour moi.

      values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, "New Picture"); values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera"); imageUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, PICTURE_RESULT); 

    et aussi

     protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case PICTURE_RESULT: if (requestCode == PICTURE_RESULT) if (resultCode == Activity.RESULT_OK) { try { thumbnail = MediaStore.Images.Media.getBitmap( getContentResolver(), imageUri); imgView.setImageBitmap(thumbnail); imageurl = getRealPathFromURI(imageUri); } catch (Exception e) { e.printStackTrace(); } } } } 

    et

     public String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } 

    Je vais vous donner quelque chose qui fonctionne pour moi. J'ai demandé la même chose!

    Solution pour sauvegarder une image dans un dossier spécifique sans perte de qualité

    J'ai trouvé la solution:

    // Créer un nouveau code de dossier:

      String path = String.valueOf(Environment.getExternalStorageDirectory()) + "/your_name_folder"; try { File ruta_sd = new File(path); File folder = new File(ruta_sd.getAbsolutePath(), nameFol); boolean success = true; if (!folder.exists()) { success = folder.mkdir(); } if (success) { Toast.makeText(MainActivity.this, "Carpeta Creada...", Toast.LENGTH_SHORT).show(); } } catch (Exception ex) { Log.e("Carpetas", "Error al crear Carpeta a tarjeta SD"); } Intent i = new Intent(MainActivity.this, MainActivity.class); startActivity(i); finish();//agregue este 

    // Méthode pour prendre une photo

     public void clickFoto(View view) { takePic(); } 

    // takePic ()

      private void takePic() { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); *File file = new File(Environment.getExternalStorageDirectory(), "/your_name_folder/a" + "/photo_" + timeStamp + ".png");* imageUri = Uri.fromFile(file); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, PICTURE_RESULT); } 

    // onActivityResult

     public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case PICTURE_RESULT: if (requestCode == PICTURE_RESULT) if (resultCode == Activity.RESULT_OK) { try { Bitmap thumbnail = MediaStore.Images.Media.getBitmap( getContentResolver(), imageUri); imgFoto.setImageBitmap(thumbnail); imageurl = getRealPathFromURI(imageUri); } catch (Exception e) { e.printStackTrace(); } } } } 

    // getRealPathFromUri

     public String getRealPathFromURI(Uri contentUri) { String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.