2010-10-13 23 views
5

Estoy usando la cámara incorporada de Android para tomar una foto y luego adjuntar la misma imagen al correo electrónico, cuando estoy probando esta funcionalidad en el dispositivo 1.6, puedo nombrar la imagen que ser tomada por la cámara en construido, pero en 2.1, la imagen está teniendo un nombre dado por el dispositivo, es decir,Guardar mapa de bits a la tarjeta SD sin comprimirlo en android

Cómo dar el nombre de usuario definido en 2.1 imágenes de las cámaras incorporadas ..

para evitar ese problema me ahorro la imagen de forma manual, pero cuando intento recuperar la imagen a través del intento como mapa de bits y luego guardarla en una tarjeta SD usando el método de compresión

estos métodos resultan de las manijas cámara incorporada

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; 
     } 

pero cuando estoy almacenando como esto que estoy recibiendo dos imágenes. uno con nombre de sistema y otro con nombre dado por mí. pero la imagen que el usuario ha definido tiene menos resolución, así que me pregunto cómo guardar el mapa de bits con más resolución sin comprimirlo ... por favor ayuda ... me

+0

Me encuentro con el mismo problema que tenía. ¿Has logrado resolverlo? En caso afirmativo, ¿podría compartirme también su solución? ¡Gracias! – Mellon

+0

Estoy teniendo el mismo problema, no encontré ninguna solución hasta ahora .. – viv

Respuesta

5

Si solo quieres guardar el mapa de bits sin perder calidad, intente usar CompressFormat.PNG en lugar de JPEG, he visto gente teniendo ese problema antes. Prueba a cambiar:

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

con:

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

y ver lo que ayuda.

+0

Incluso después de establecer el 100% en JPEG, tenía pérdidas en claridad y calidad. Cuando comprimí utilizando PNG como la misma claridad. Gracias :-) –

2

Aparte de la respuesta de Rick anterior, asegúrese de que está proporcionando un URI a la intención de la cámara donde puede guardar la imagen completa, de lo contrario devolverá la imagen del pulgar en el parámetro de datos de intención. Por lo tanto, será como:

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); 

Este fue el error que yo estaba haciendo.

Cuestiones relacionadas