2011-01-21 3 views
0

나는 wpf application.First에서 tiff 이미지를 memorystream을 사용하여 이미지를 바이트로 변환 한 다음 바이트를 bitmap 이미지로 변환했습니다. 나는 이미지에 비트 맵 이미지를 준다. 나는 또한 다른 이미지를 가져 와서 변환없이 이미지 소스 경로를 직접 제공한다. 내가 관찰 한 것은 변환 후의 이미지 품질이 낮아졌다는 것이다. 왜 그렇게됩니까?바이트에서 변환 후 이미지 품질을 높이려면 어떻게해야합니까?

내 코드는 다음과 같습니다. File.ReadAllBytes ("filepath")를 사용하여 이미지를 바이트로 변환했습니다.

내가 바이트 []에서 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

을 대해 참조 할 수

RenderOptions.SetBitmapScalingMode(MyImage, BitmapScalingMode.HighQuality); 

로 BitScalingMode 종속성 속성을 사용하여 높은 품질을 얻기 위해 명시 적으로 이미지의 품질을 지정해야 문제. 감마 수정 이외의 압축 알고리즘이 없다면 품질이 떨어질 수 있습니다. –

답변

0

Waqq Raja에게 답장을 보내 주셔서 감사합니다. 프로젝트를 3.5 버전에서 4.0 버전으로 변환하는 동안 이미지 품질이 저하됩니다. 3.5 버전에서는 기본적으로 이미지 품질이 높습니다. 그러나 4.0 버전에서는 우리는 당신은 좋은 링크

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

0

에 BitmapSource는 할당합니다. 당신이 사용은하지 않는 방법으로, 당신은 당신이 사용하는 몇 가지 예제 코드를 게시하시기 바랍니다 수 있다면 여기

 
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

+0

어떤 방법을 사용하고 있습니까? –

+0

3.5에서 4.0 버전으로 응용 프로그램을 변환 할 때이 문제가 발생합니다. – Vamsy

관련 문제