Ejemplo n.º 1
0
        /// <summary>
        /// Pipeline callback function for encoding an image sample
        /// </summary>
        /// <param name="sharedImage">Image to be encoded</param>
        /// <param name="e">Pipeline information about the sample</param>
        protected override void Receive(Shared <Image> sharedImage, Envelope e)
        {
            // the encoder has thread affinity, so we need to re-create it (we can't dispatch the call since we sdon't know if the thread that created us is pumping messages)
            var encoder = this.encoderFn();

            using (var sharedEncodedImage = EncodedImagePool.Get())
            {
                sharedEncodedImage.Resource.EncodeFrom(sharedImage.Resource, encoder);
                this.Out.Post(sharedEncodedImage, e.OriginatingTime);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Given an image and stream, this method will compress the image using
        /// the compression method set in Initialize()
        /// </summary>
        /// <param name="writer">Stream to write compressed image to</param>
        /// <param name="instance">Image to be compressed</param>
        /// <param name="context">Serialization context</param>
        public void Serialize(BufferWriter writer, Image instance, SerializationContext context)
        {
            BitmapEncoder encoder = null;

            switch (this.compressionMethod)
            {
            case Image.CustomSerializer.CompressionMethod.JPEG:
                encoder = new JpegBitmapEncoder {
                    QualityLevel = 90
                };
                break;

            case Image.CustomSerializer.CompressionMethod.PNG:
                encoder = new PngBitmapEncoder();
                break;
            }

            using (var sharedEncodedImage = EncodedImagePool.Get())
            {
                sharedEncodedImage.Resource.EncodeFrom(instance, encoder);
                Serializer.Serialize(writer, sharedEncodedImage, context);
            }
        }