StreamExtensions.cs 888 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System.IO;
  2. using Ionic.Zlib;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public static class StreamExtensions
  5. {
  6. public static void CopyTo(this Stream stream, Stream outStream)
  7. {
  8. var buf = new byte[1024 * 32];
  9. int length;
  10. while ((length = stream.Read(buf, 0, buf.Length)) > 0)
  11. outStream.Write(buf, 0, length);
  12. }
  13. public static MemoryStream Decompress(this MemoryStream stream)
  14. {
  15. var dataMemoryStream = new MemoryStream();
  16. using var compressionStream = new DeflateStream(stream, CompressionMode.Decompress, true);
  17. compressionStream.CopyTo(dataMemoryStream);
  18. compressionStream.Flush();
  19. dataMemoryStream.Position = 0L;
  20. return dataMemoryStream;
  21. }
  22. public static DeflateStream GetCompressionStream(this MemoryStream stream) =>
  23. new(stream, CompressionMode.Compress);
  24. }