/// <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); }
/// <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); }
/// <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); }
/// <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); }