Ejemplo n.º 1
0
        private void OnImageComposerNewImageAvailable(object sender, EventArgs e)
        {
#if !NATIVE
            // reduce to 8bit using custom lib, return palette, store indices in buffer pixels
            uint[] pal    = quant.Quantize((Bitmap)imageComposer.Image, 256, pixels, false);
            int    colors = pal.Length;
#else
            int    colors = 256;
            uint[] pal    = WuQuantWrap.WuQuant.Quantize(quant, imageComposer.Image, ref colors, pixels, 0);
#endif

            // get timespan for gif
            double span = tick - tickLastAdd;
            tickLastAdd = tick;

            if (frame != null)
            {
                // set delay on last frame
                frame.GraphicsControl.DelayTime = (ushort)(span * 0.1);

                // add last frame
                gif.Frames.Add(frame);
            }

            // create new gif frame
            frame = new Gif.Frame(
                pixels,
                imageComposer.Image.Width,
                imageComposer.Image.Height,
                pal,
                (uint)colors,
                encoder,
                0,
                0);

            // cleanup
            imageComposer.Image.Dispose();
        }
Ejemplo n.º 2
0
        private void Finish(HttpContext context, int StatusCode = 200)
        {
            // reset
            tick        = 0.0;
            tickLastAdd = 0.0;
            frame       = null;

            // clean up reusable member instances
            imageComposer.DataSource = null;
            gif.Frames.Clear();
            //gameObject.SubOverlays.Clear();
            //gameObject.Clear(true);

            // set statuscode
            context.Response.StatusCode = StatusCode;

            // end response
            try { context.ApplicationInstance.CompleteRequest(); }
            finally { }

            // reuse the handler
            RenderRouteHandler.Handlers.Enqueue(this);
        }