From 77d0ca058ae6df9e5d4d54858208cad401d90d64 Mon Sep 17 00:00:00 2001 From: RogueException Date: Thu, 17 Aug 2017 03:12:18 -0300 Subject: [PATCH] Merged with old method --- .../Net/Converters/ImageConverter.cs | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net.Rest/Net/Converters/ImageConverter.cs b/src/Discord.Net.Rest/Net/Converters/ImageConverter.cs index 583180d95..222e8e579 100644 --- a/src/Discord.Net.Rest/Net/Converters/ImageConverter.cs +++ b/src/Discord.Net.Rest/Net/Converters/ImageConverter.cs @@ -24,14 +24,24 @@ namespace Discord.Net.Converters if (image.Stream != null) { - Stream cloneStream = new MemoryStream(); - image.Stream.CopyTo(cloneStream); + byte[] bytes; + int length; + if (image.Stream.CanSeek) + { + bytes = new byte[image.Stream.Length - image.Stream.Position]; + length = image.Stream.Read(bytes, 0, bytes.Length); + } + else + { + var cloneStream = new MemoryStream(); + image.Stream.CopyTo(cloneStream); + byte[] bytes = new byte[cloneStream.Length]; + cloneStream.Position = 0; + cloneStream.Read(bytes, 0, bytes.Length); + length = (int)cloneStream.Length; + } - byte[] bytes = new byte[cloneStream.Length]; - cloneStream.Seek(0, SeekOrigin.Begin); - cloneStream.Read(bytes, 0, bytes.Length); - - string base64 = Convert.ToBase64String(bytes); + string base64 = Convert.ToBase64String(bytes, 0, length); writer.WriteValue($"data:image/jpeg;base64,{base64}"); } else if (image.Hash != null)