2012-10-08 61 views
0

在我的應用程序中,我想用相機拍照並將其保存在文件中。 照片質量在我的應用程序中非常重要,所以當我進行壓縮以保存時,圖像質量會丟失。 這是我的代碼:用相機保存圖像而不壓縮圖像

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 
     FileOutputStream outStream = null; 
     saveFullImage(); 
     if ((requestCode == TAKE_PICTURE)) 
     { 

      if (data != null) 
      { 
       if (data.HasExtra("data")) 
       { 
        Bitmap pic = (Bitmap)data.Extras.Get("data"); 



        System.IO.MemoryStream baos = new System.IO.MemoryStream(); 
        pic.Compress(Bitmap.CompressFormat.Png, 100, baos); 
        byte[] byte_img_data = baos.ToArray(); 
        outStream = new FileOutputStream(outputFileUri.Path); 

        outStream.Write(byte_img_data); 
        outStream.Close(); 



       } 
      } 
     } 
    } 

請幫幫我。 謝謝。

+0

......而問題是......? – Wug

+0

你會請張貼這兩個圖像:預壓縮和後壓縮爲他人告訴多少質量損失是? – dumbfingers

+0

帶相機的原始圖像大小爲789 kb,但是當我將它壓縮到77 kb –

回答

0

謝謝大家。

使用下面的代碼不會改變畫面細節:

var mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile); 
var contentUri = Android.Net.Uri.FromFile(_file); 
mediaScanIntent.SetData(contentUri); 
this.SendBroadcast(mediaScanIntent); 
0
pic.Save("yourfilenamehere.png", ImageFormat.Png); 

如果你知道你寫在一個文件上(檢查Image class Save方法是否適用於其他重載)應該足夠了。

這種壓縮是無損的,所以你不應該以這種方式丟失任何細節。