2011-08-13 4 views
1

WPF/C#에서 geckoFX를 사용하여 웹 사이트 이미지를 만들려고합니다. 코드를 실행할 때 오류가 발생합니다.geckoFx로 웹 사이트 미리보기 이미지를 생성하면 오류가 발생합니다.

에러 비트 맵 폭 및 (INT) wWidth 및 (INT) 오류 텍스트가 (파라미터가 유효하지 않은) 및 System.ArgumentException wHeight

오류 선 발생

Bitmap bmp = new Bitmap(wWidth, wHeight); //Error here (Parameter is not valid. 
geckoWebBorwser에서 사용 높이

System.ArgumentException)

예 번호 :

class GetWebCapture 
{ 
    public static BitmapSource GetThumb(Skybound.Gecko.GeckoWebBrowser wb, int w, int h, int wWidth, int wHeight) 
    { 
     if (wb != null) 
     { 

      Bitmap bmp = new Bitmap(wWidth, wHeight); 


      Rectangle rec = new Rectangle(0, 0, wWidth, wHeight); 
      Rectangle rec1 = new Rectangle(0, 0, w, h); 

      wb.DrawToBitmap(bmp, rec); 

      Graphics gfx = Graphics.FromImage(bmp); 
      gfx.CompositingQuality = CompositingQuality.HighQuality; 
      gfx.SmoothingMode = SmoothingMode.HighQuality; 
      gfx.InterpolationMode = InterpolationMode.HighQualityBicubic; 


      gfx.DrawImage(bmp, rec); 

      Bitmap newImage = new Bitmap(290, 200); 

      using (Graphics gr = Graphics.FromImage(newImage)) 
      { 
       gr.SmoothingMode = SmoothingMode.AntiAlias; 
       gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
       gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 

       gr.DrawImage(bmp, new Rectangle(0, 0, 290, 200)); 
      } 

      BitmapSource source = loadBitmaps(newImage); 


      gfx.Dispose(); 
      bmp.Dispose(); 

      return source; 

     } 
     else 
     { 

      return null; 
     } 

    public static BitmapSource loadBitmaps(System.Drawing.Bitmap source) 
    { 
     return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, 
      System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); 
    } 
} 

WebKit.Net이 메서드는 잘 작동합니다. IE webBrowser를 사용하면 다른 메서드가 있지만이 메서드는 제대로 작동하지만 프로젝트에 적합하지 않습니다.

+0

어떤 오류가 발생합니까? 소식을 수정하여 추가 정보를 제공해주십시오. 더 나은 읽기를 위해 조금 개조했습니다. – Sascha

+0

매개 변수 값을 제공 할 수 있습니까? – Sascha

답변

0

작은 샘플을 만들었습니다 (geckoFx는 알 수 없지만 재미있었습니다). 다음 코드는 잘 실행 : 나는 사각형의 크기보다 크거나 같아야 브라우저 크기를 다시하지 않았을 때

namespace WebsiteScreeshot { 
    class Program { 
    static void Main (string[] args) { 
     if (args.Length != 2) { 
     Console.WriteLine("You need to provide URL and image"); 
     return; 
     } 

     Xpcom.Initialize(@"C:\Libs\xulrunner"); 
     var browser = new GeckoWebBrowser(); 
     browser.CreateControl(); 
     while (!browser.IsHandleCreated) { 
     System.Threading.Thread.Sleep(200); 
     System.Windows.Forms.Application.DoEvents(); 
     } 
     browser.Navigate(args[0]); 
     while (browser.IsBusy) { 
     System.Threading.Thread.Sleep(200); 
     System.Windows.Forms.Application.DoEvents(); 
     } 
     browser.Width = 1044; 
     browser.Height = 768; 
     using (Bitmap bmp = new Bitmap(1024, 768)) { 
     Rectangle rec = new Rectangle(0, 0, 1024, 768); 
     browser.DrawToBitmap(bmp, rec); 
     bmp.Save(args[1]); 
     } 
     browser = null; 
    } 
    } 
} 

내가 browser.DrawToImage에서 오류가 발생했습니다.

+0

나는 두 개의 if 문으로 updade 코드를 사용한다. if (wb.Width> 5) if (wb.Height> 5) – doberman