示例#1
0
        /// <summary>
        /// Saves the given Frame into a stream
        /// </summary>
        /// <param name="frame">The frame to write to the stream</param>
        /// <param name="stream">The stream to write the frame to</param>
        protected void SaveFrameToStream(IFrame frame, Stream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            // Save the space for the image size on the stream
            long sizeOffset = stream.Position;

            writer.Write((long)0);

            // Save the frame image
            frame.GetComposedBitmap().Save(stream, ImageFormat.Png);

            // Skip back to the image size offset and save the size
            long streamEnd = stream.Position;

            stream.Position = sizeOffset;
            writer.Write(streamEnd - sizeOffset - 8);

            // Skip back to the end to keep saving
            stream.Position = streamEnd;

            // Write the frame ID
            writer.Write(frame.ID);

            // Write the hash now
            writer.Write(frame.Hash.Length);
            writer.Write(frame.Hash, 0, frame.Hash.Length);
        }
示例#2
0
        /// <summary>
        /// Saves the given Frame into a stream
        /// </summary>
        /// <param name="frame">The frame to write to the stream</param>
        /// <param name="stream">The stream to write the frame to</param>
        protected void SaveFrameToStream(IFrame frame, Stream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            var castFrame = frame as Frame;

            if (castFrame != null)
            {
                SaveLayersToStream(castFrame, stream);
            }
            else
            {
                using (Bitmap bitmap = frame.GetComposedBitmap())
                {
                    PersistenceHelper.SaveImageToStream(bitmap, stream);
                }
            }

            // Write the frame ID
            writer.Write(frame.ID);

            // Write the hash now
            writer.Write(frame.Hash.Length);
            writer.Write(frame.Hash, 0, frame.Hash.Length);
        }
示例#3
0
        /// <summary>
        /// Writes the given Frame into a stream
        /// </summary>
        /// <param name="frame">The frame to write to the stream</param>
        /// <param name="stream">The stream to write the frame to</param>
        public static void WriteFrameToStream(IFrame frame, Stream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            long sizeOffset = stream.Position;

            writer.Write((long)0);

            frame.GetComposedBitmap().Save(stream, ImageFormat.Png);

            // Skip back to the offset and draw the size
            stream.Position = sizeOffset;

            // Write the size now
            writer.Write(stream.Length - sizeOffset - 8);

            // Skip to the end and keep saving
            stream.Position = stream.Length;

            // Write the frame ID
            writer.Write(frame.ID);

            // Write the hash now
            writer.Write(frame.Hash.Length);
            writer.Write(frame.Hash, 0, frame.Hash.Length);
        }
示例#4
0
        /// <summary>
        /// Sets the current frame  being displayed on the filter view
        /// </summary>
        /// <param name="frame">The </param>
        private void SetDisplayFrame(IFrame frame)
        {
            _currentFrameBitmap?.Dispose();

            _currentFrameBitmap = frame.GetComposedBitmap();

            fs_filters.SetImage(_currentFrameBitmap);
        }