2012-05-03 5 views
1

런타임시 간단한 tiff 이미지를 생성하려고합니다. 이 이미지는 흰색 배경과 원격 서버에서 다운로드 한 이미지로 구성됩니다.WPF에서 런타임시 tiff 이미지 생성

 const string url = "http://localhost/barcode.gif"; 

     var size = new Size(794, 1123); 
     var drawingVisual = new DrawingVisual(); 

     using (var drawingContext = drawingVisual.RenderOpen()) 
     { 
      drawingContext.DrawRectangle(new SolidColorBrush(Colors.White), null, new Rect(size)); 

      var image = new BitmapImage(new Uri(url)); 
      drawingContext.DrawImage(image, new Rect(0, 0, 180, 120)); 
     } 

     var targetBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Default); 
     targetBitmap.Render(drawingVisual); 

     var convertedBitmap = new FormatConvertedBitmap(targetBitmap, PixelFormats.BlackWhite, null, 0); 

     var encoder = new TiffBitmapEncoder(); 
     encoder.Frames.Add(BitmapFrame.Create(convertedBitmap)); 

     using (var fs = new FileStream("out.tif", FileMode.Create)) 
     { 
      encoder.Save(fs); 
     } 

코드는 작동 및 파일 "out.tif"생성

는 여기에 그 목표에 도달하기 위해 작성한 코드입니다. 그러나 출력 파일은 원격 서버에서 수신 된 이미지가 없으면 흰색 배경입니다.

무엇이 문제 일 수 있습니까? 나는 다음과 같은 코드를 다양한 방법으로 시도했지만 매번 운이 없다.

답변

0

이 독서는 FormatConvertedBitmap 클래스에 대한 내용입니다. 어쩌면 그것을 줄 수있다

 FormatConvertedBitmap newFormatedBitmapSource = new FormatConvertedBitmap(); 

     // BitmapSource objects like FormatConvertedBitmap can only have their properties 
     // changed within a BeginInit/EndInit block. 
     newFormatedBitmapSource.BeginInit(); 

     // Use the BitmapSource object defined above as the source for this new 
     // BitmapSource (chain the BitmapSource objects together). 
     newFormatedBitmapSource.Source = targetBitmap; 

     // Set the new format to BlackWhite. 
     newFormatedBitmapSource.DestinationFormat = PixelFormats.BlackWhite; 
     newFormatedBitmapSource.EndInit(); 
관련 문제