2011-08-02 103 views
7

我有一个Android应用程序,我使用的是安卓相机以拍摄照片。并且在拼凑一些后,我设法让我的照片在我想要的位置以及我的想法。最后的问题是图像的质量。增加用安卓相机拍摄的照片的质量/清晰度/亮度

当我的预览开始时,一切都看起来非常清晰和优雅,但是在拍照并显示最终结果后,图像看起来并不好看。

这里是我的surfaceChanged()方法看起来像,在那里我设置一些参数:

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

Coudl有人告诉什么是增加我的photo.Thanks质量的方法!

编辑:

activity A在拍摄照片时,我使用的是捆绑到图像发送到另一个activity B在那里我将它存储在SDCARD。这里就是我如何做到这一点:

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

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

我收到我把它放在一个位图中的图片,我将它旋转并在方法drawTextImage()上绘制文本。 这一切后我店使用这种上sdcardbitmapResult

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这样称呼它:StoreByteImage(getBaseContext(),bitmapResult,100,String.valueOf(value)); 感谢

+0

但它看起来,因为当我使用相机拍摄一张照片,应用程序之外......只是为了好玩disaster.There必须的东西,画面看起来华丽! – adrian

+0

我希望我会找到解决方案的原因否则....我不知道我要做什么! – adrian

+0

你的意思是什么?解析度?明晰?亮度?对比?色彩均衡?有很多事情可以说明照片的质量。 –

回答

0

我有这个问题,因为自动对焦被禁用。

尝试增加这个权限在你的Android清单:

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

我有它:)....但照片仍不清楚! – adrian

+0

我也有同样的问题,但仍然没有得到正确的结果。 –

相关问题