2011-08-02 16 views
7

Tengo una aplicación de Android donde estoy usando la cámara de Android para tomar fotos.Y después de luchar un poco, pude tener mi imagen donde quiero y cómo quiero. El problema final es la calidad de la imagen.aumentar la calidad/claridad/brillo de las fotos tomadas con la cámara de Android

Cuando mi vista previa comienza todo se ve muy claro y genial, pero después de tomar la foto y mostrar el resultado final, la imagen no se ve nada bien.

Así es como mi método surfaceChanged() parece-donde estoy establecer algunos parámetros:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
     Log.e(TAG, "surfaceChanged"); 
     if (mPreviewRunning) { 
      mCamera.stopPreview(); 
     } 

     Camera.Parameters p = mCamera.getParameters(); 
     List<Size> sizes = p.getSupportedPictureSizes(); 

System.out.println("Lista de parametrii este urmatoarea:"+sizes); 
     Size size = sizes.get(7); 
     p.setPictureSize(size.width,size.height); 
     mCamera.setParameters(p); 
     try { 
      mCamera.setPreviewDisplay(holder); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     mCamera.startPreview(); 
     mPreviewRunning = true; 
    } 

desvivían por alguien decir lo que es la manera de aumentar la calidad de mis photo.Thanks!

EDIT:

En activity A, donde se toma la fotografía utilizo un paquete para enviar la imagen a otro activity B donde almaceno en la SDCARD .Aquí es cómo lo hago:

Activity A:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback(){ 
     public void onPictureTaken(byte[] imageData, Camera c) { 

      if (imageData != null) { 

       Intent mIntent = new Intent(); 
       Bundle b = new Bundle(); 
       b.putByteArray("imageData", imageData); 
       Intent i = new Intent(mContext,ImageDisplayActivity.class); 
       i.putExtras(b); 
       startActivity(i); 

       setResult(FOTO_MODE, mIntent); 
       finish(); 

      } 
     } 
    }; 

en activity B:

Bundle extras = getIntent().getExtras(); 
     BitmapFactory.Options options=new BitmapFactory.Options(); 
     options.inSampleSize = 5; 
     byte[] imageData = extras.getByteArray("imageData"); 
     Bitmap myImage = BitmapFactory.decodeByteArray(imageData , 0, imageData.length,options); 

     Matrix mat=new Matrix(); 
     mat.postRotate(90); 
     bitmapResult = Bitmap.createBitmap(myImage, 0, 0, myImage.getWidth(),myImage.getHeight(), mat, true); 

     Canvas c = new Canvas(bitmapResult); 
     drawTextImage(bitmapResult); 

Recibo la imagen que puse en un mapa de bits, la giro y dibujo un texto sobre ella en el método drawTextImage(). Después de todo esto almaceno la bitmapResult en sdcard usando esto:

public static boolean StoreByteImage(Context mContext, Bitmap bitmap, int quality, String expName) { 


     FileOutputStream fileOutputStream = null; 
     String extStorageDirectory=Environment.getExternalStorageDirectory().toString(); 
     File myNewFolder = new File(extStorageDirectory + newFolder); 
     if(myNewFolder.mkdirs()) 
     { 
     myNewFolder.mkdir(); 
     } 
     try {  

      //fileOutputStream = new FileOutputStream(sdImageMainDirectory.toString() +"/image.jpg"); 
      fileOutputStream = new FileOutputStream(myNewFolder +"/"+expName+".jpg"); 
      BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream); 

      bitmap.compress(CompressFormat.JPEG, quality, bos); 

      bos.flush(); 
      bos.close(); 

     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return true; 
    } 

ussually llamarlo así: StoreByteImage(getBaseContext(),bitmapResult,100,String.valueOf(value)); Gracias

+0

Pero se está buscando disaster.There debe ser algo porque cuando tomo una foto con la cámara, fuera de la aplicación ... sólo por diversión, el cuadro se ve precioso! – adrian

+0

Espero que encuentre la solución de lo contrario ... ¡No sé lo que voy a hacer! – adrian

+0

¿A qué se refiere específicamente por calidad? ¿Resolución? ¿Claridad? ¿Brillo? ¿Contraste? ¿Balance de color? Hay muchas cosas que explican la calidad de una foto. –

Respuesta

0

tuve este problema porque el enfoque automático se ha desactivado.

Trate de añadir este permiso a su manifiesto de Android:

<uses-feature android:name="android.hardware.camera.autofocus" /> 
+0

Lo tengo:) .... pero aún así la imagen no está clara! – adrian

+0

También tengo el mismo problema pero todavía no obtengo el resultado correcto. –

Cuestiones relacionadas