2010-10-13 11 views
5

Sto usando la fotocamera integrata di Android per scattare foto e quindi allegare la stessa immagine per e-mail, quando sto testando questa funzionalità in 1.6 dispositivo, sono in grado di nominare l'immagine che essere presa da fotocamera integrata, ma in 2.1, l'immagine sta avendo un nome cioè data dal dispositivo,Salvataggio di bitmap su scheda SD senza comprimerlo in Android

Come dare il nome utente definito in 2,1 immagini fotocamera incorporata ..

per evitare che il problema Mi risparmio l'immagine manualmente ma quando provo a riprendere l'immagine tramite intento come bitmap e quindi salvandola su sd card usando il metodo compress

Questo metodo gestisce il risultato di fotocamera incorporata

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    File file = new File(Environment.getExternalStorageDirectory() 
    + "/test.png"); 
    switch (requestCode) 
    { 
    case PHOTO_ACTION: 
    if (resultCode == RESULT_CANCELED) 
    { 
    addPhoto = false; 
    Toast.makeText(this, "Canceled ", Toast.LENGTH_LONG).show(); 
    break; 
    } else if (resultCode == RESULT_OK) 
    { 
    Bundle b = data.getExtras(); 
    Bitmap bm = (Bitmap) b.get("data"); 

    FileOutputStream out; 
    try 
    { 

    out = new FileOutputStream(file); 
    bm.compress(Bitmap.CompressFormat.JPEG, 100, out); 
    out.flush(); 
    out.close(); 
    scanPhoto(file.toString()); 
    out = null; 
    addPhoto = true; 
    } catch (Exception e) 
     { 
     e.printStackTrace(); 
     addPhoto = false; 
     } 

ma quando sono la memorizzazione di come questo sto ottenendo due immagini. uno con il nome dato dal sistema e l'altro con il nome dato da me. ma l'immagine che è stata definita dall'utente ha meno risoluzione quindi mi chiedo come salvare la bitmap con più risoluzione senza comprimerla .. please help .... me

+0

Sto incontrando lo stesso problema che avevi. Sei riuscito a risolverlo? Se sì, potresti per favore anche condividere la tua soluzione con me? Grazie! – Mellon

+0

Sto avendo lo stesso problema, non ho trovato nessuna soluzione fino ad ora .. – viv

risposta

5

Se si desidera salvare la bitmap senza perdere la qualità prova a usare CompressFormat.PNG invece di JPEG, ho visto persone che hanno già avuto questo problema. Prova a cambiare:

bm.compress(Bitmap.CompressFormat.JPEG, 100, out); 

con:

bm.compress(Bitmap.CompressFormat.PNG, 100, out); 

e vederlo aiuta.

+0

Anche dopo aver impostato il 100% in JPEG ha avuto perdite di chiarezza e qualità. Quando ho compresso usando PNG come la stessa chiarezza. Grazie :-) –

2

Oltre alla risposta di Rick sopra, assicurati di fornire un URI per l'intento della videocamera in cui è possibile salvare l'immagine completa, altrimenti restituirà l'immagine del pollice nei parametri dei parametri di intenti. Così sarà come:

Intent photoPickerIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
imgFile = new File("Cache directory","img.png"); //== where you want full size image 
photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(imgFile)); 
startActivityForResult(photoPickerIntent, PickPhoto); 

Questo è stato l'errore che stavo facendo.

Problemi correlati