Пример #1
0
        public static byte[] GetXorBitmap()
        {
            Bitmap     XorBitmap = new Bitmap(512, 512);
            FastBitmap FBitmap   = new FastBitmap(XorBitmap);

            for (int x = 0; x < XorBitmap.Width; x++)
            {
                for (int y = 0; y < XorBitmap.Height; y++)
                {
                    Color color = ColorTranslator.FromOle((x ^ y));
                    color = Color.FromArgb(color.R, color.R, color.R);
                    FBitmap.SetPixel(x, y, color);
                }
            }

            FBitmap.Release();

            ImageCodecInfo    codec       = WebShot.GetEncoderInfo("image/png");
            EncoderParameters codecParams = new EncoderParameters(1);

            codecParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L);

            MemoryStream stream = new MemoryStream();

            XorBitmap.Save(stream, codec, codecParams);

            byte[] buffer = stream.ToArray();

            stream.Close();
            codecParams.Dispose();

            return(buffer);
        }
Пример #2
0
 public void Enqueue(WebShot webShot)
 {
     lock (this.syncRoot)
     {
         if (!hash.Contains(webShot.url))
         {
             hash.Add(webShot.url, "enqueue");
             queue.Enqueue(webShot);
         }
     }
 }
Пример #3
0
        private void Fetch()
        {
            while (true)
            {
                WebShot webShot = null;

                while (webShot == null)
                {
                    lock (this.syncRoot)
                    {
                        if (queue.Count > 0)
                        {
                            webShot = queue.Dequeue();
                        }
                        Console.Title = "queue.Count: " + queue.Count + ", hash.Count: " + hash.Count;
                    }

                    if (webShot == null)
                    {
                        Thread.Sleep(100);
                    }
                }

                using (WebBrowser webBrowser = new WebBrowser())
                {
                    webBrowser.Size = new Size(WebShot.width, WebShot.height);
                    webBrowser.ScrollBarsEnabled      = false;
                    webBrowser.ScriptErrorsSuppressed = true;
                    // webBrowser.Silent
                    (SHDocVw.IWebBrowser2)webBrowser.Silent = true;
                    hash[webShot.url] = "fetching";

                    switch (webShot.ReadyState)
                    {
                    case WebShot.wsNotReady:
                        Console.Write("f");
                        break;

                    case WebShot.wsExpired:
                        Console.Write("u");
                        break;

                    case WebShot.wsTimeout:
                        Console.Write("r");
                        break;
                    }

                    webShot.HookEvents(webBrowser);
                    webBrowser.Navigate(webShot.url, false);

                    DateTime start = DateTime.Now;
                    while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
                    {
                        if (GetQueueStatus(QS_ALLINPUT) != 0)
                        {
                            Application.DoEvents();
                        }
                        Thread.Sleep(500);

                        TimeSpan span = DateTime.Now - start;

                        if (span.Seconds >= 30)
                        {
                            webShot.ReadyState = WebShot.wsTimeout;
                            break;
                        }
                    }
                    webShot.Save();
                }

                hash.Remove(webShot.url);
            }
        }