Beispiel #1
0
 /// <inheritdoc/>
 protected override void Receive(Shared <Image> sharedImage, Envelope e)
 {
     using var sharedEncodedImage = EncodedImagePool.GetOrCreate(
               sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat);
     sharedEncodedImage.Resource.EncodeFrom(sharedImage.Resource, this.encoder);
     this.Out.Post(sharedEncodedImage, e.OriginatingTime);
 }
Beispiel #2
0
        /// <inheritdoc/>
        public void Serialize(BufferWriter writer, Image instance, SerializationContext context)
        {
            // Note: encoder instances are created here because they (in the case of media foundation) may have thread affinity.
            BitmapEncoder encoder = null;

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

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

            case CompressionMethod.None:
                break;
            }

            if (encoder != null)
            {
                using (var sharedEncodedImage = EncodedImagePool.GetOrCreate())
                {
                    ImageEncoder.EncodeFrom(sharedEncodedImage.Resource, instance, encoder);
                    Serializer.Serialize(writer, sharedEncodedImage, context);
                }
            }
            else
            {
                Serializer.Serialize(writer, instance, context);
            }
        }
Beispiel #3
0
 /// <inheritdoc/>
 public void Serialize(BufferWriter writer, Image image, SerializationContext context)
 {
     if (this.encoder != null)
     {
         using var sharedEncodedImage = EncodedImagePool.GetOrCreate(image.Width, image.Height, image.PixelFormat);
         sharedEncodedImage.Resource.EncodeFrom(image, this.encoder);
         Serializer.Serialize(writer, sharedEncodedImage, context);
     }
     else
     {
         Serializer.Serialize(writer, image, context);
     }
 }
Beispiel #4
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);
            }
        }