2011-01-21 95 views
0

我在wpf應用程序中有tiff圖像。首先我使用memorystream將圖像轉換爲字節,然後將字節轉換爲bitmapimage。我給圖片提供了bitmapimage。我還拍攝了另一張圖片,並且直接給出其圖片路徑,而無需轉換。我觀察到的是轉換後圖片的質量變低。爲什麼會發生?如何提高從字節轉換後的圖像質量?

我的代碼如下。我使用了 File.ReadAllBytes(「filepath」)將圖像轉換爲字節。

我用下面的方法來從字節[]得到的BitmapSource。然後,我在的BitmapSource分配給圖像

public static System.Windows.Media.Imaging.BitmapSource ConvertBytesToBitmapSource(byte[] imageBytes) 

{ 
      System.Drawing.Bitmap source = new System.Drawing.Bitmap(ConvertBytesToImage(imageBytes)); 

      IntPtr imagePtr = source.GetHbitmap(); 

      System.Windows.Media.Imaging.BitmapSource bitmapSour = null; 

      try 
      { 

       bitmapSour = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(imagePtr, 

        IntPtr.Zero, System.Windows.Int32Rect.Empty, 

        System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); 

      } 

      catch (Exception ex) 
      { 

       logger.Error("Error in converting bytes to BitmapSource", ex); 
       throw ex; 
      } 

      finally 
      { 
       DeleteObject(imagePtr); 
      } 

      return bitmapSour; 

     } 
+0

這是一個好題。如果沒有壓縮算法,除了伽馬校正,我不會看到它們會如何失去質量。 – 2011-01-21 07:46:36

回答

0

謝謝Waqas Raja給予回覆。我解決了問題 轉換項目從3.5到4.0版本,圖像質量下降。在3.5版本中,默認情況下圖像質量是高品質。但在4.0版本我們需要明確指定了圖像的質量,通過使用BitScalingMode依賴屬性爲

RenderOptions.SetBitmapScalingMode(MyImage, BitmapScalingMode.HighQuality); 

獲得高品質的您可以所指向的鏈接

http://msdn.microsoft.com/en-us/library/bb613591.aspx

0

您應該使用Graphics對象繪製的新形象,而不是僅僅創建映像。這裏是示例代碼

 
System.Drawing.Image sourceImage = System.Drawing.Image.FromStream(sourceStrm, true, true); 
System.Drawing.Bitmap destBitmap = new System.Drawing.Bitmap(destWidth, destHeight); 
System.Drawing.Graphics grap = System.Drawing.Graphics.FromImage((System.Drawing.Image)destBitmap); 
grap.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
grap.DrawImage(sourceImage, 0, 0, destWidth, destHeight); 

如果它不是你使用的方式,你可以請張貼你使用的一些示例代碼。

+0

謝謝你給出的答覆,但它不工作 – Vamsy 2011-01-21 11:21:26