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); }
public void Enqueue(WebShot webShot) { lock (this.syncRoot) { if (!hash.Contains(webShot.url)) { hash.Add(webShot.url, "enqueue"); queue.Enqueue(webShot); } } }
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); } }