diff --git a/ChatController/ChatMainControl.xaml.cs b/ChatController/ChatMainControl.xaml.cs index 4276c6a..1a57df4 100644 --- a/ChatController/ChatMainControl.xaml.cs +++ b/ChatController/ChatMainControl.xaml.cs @@ -642,6 +642,8 @@ namespace ChatController Chatbox.Text = string.Empty; + Thread.Sleep(500); + DoSynchro(); } } diff --git a/ChatController/HauptKlassen/Chat.cs b/ChatController/HauptKlassen/Chat.cs index d852898..06ad221 100644 --- a/ChatController/HauptKlassen/Chat.cs +++ b/ChatController/HauptKlassen/Chat.cs @@ -919,16 +919,16 @@ namespace ChatController.HauptKlassen var windowMaxWidth = imageWidth; var windowMaxHeight = imageHeight; - if (windowMaxWidth > primaryScreenWidth2 || windowMaxHeight > primaryScreenHeight2) + if(windowMaxWidth > .8 * primaryScreenWidth2 || windowMaxHeight > .8 * primaryScreenHeight2) { - if (primaryScreenWidth2 > primaryScreenHeight2) + if(primaryScreenWidth2 > primaryScreenHeight2) { - windowMaxHeight = (int)(.9 * primaryScreenHeight2); + windowMaxHeight = (int)(.8 * primaryScreenHeight2); windowMaxWidth = (int)(windowMaxHeight * imageAspectRatio); } else { - windowMaxWidth = (int)(.9 * primaryScreenWidth2); + windowMaxWidth = (int)(.8 * primaryScreenWidth2); windowMaxHeight = (int)(windowMaxWidth * imageAspectRatio); } } @@ -978,7 +978,7 @@ namespace ChatController.HauptKlassen public void ShowPicture(string originalImage, long groupId, Action downloadCompletedCallback) { - if(originalImage == null) + if(originalImage is null) { return; } diff --git a/ChatController/Utilities/Utils.cs b/ChatController/Utilities/Utils.cs index d2da294..b2e2984 100644 --- a/ChatController/Utilities/Utils.cs +++ b/ChatController/Utilities/Utils.cs @@ -74,27 +74,53 @@ namespace ChatController.Utilities { ResponseWriter = stream => { - var bitmap = new BitmapImage(); + var rotation = Rotation.Rotate0; - var localStream = new MemoryStream(); + using(var image = Image.FromStream(stream)) + { + if(image.PropertyIdList.Contains(0x112)) + { + rotation = GetRotationFromExifTag(image.GetPropertyItem(0x112).Value[0]); + } - stream.CopyTo(localStream); + var bitmap = new BitmapImage(); - localStream.Position = 0; + var localStream = new MemoryStream(); - bitmap.BeginInit(); - bitmap.StreamSource = localStream; - bitmap.EndInit(); - bitmap.Freeze(); + image.Save(localStream, image.RawFormat); - callback?.Invoke(bitmap); + localStream.Position = 0; + + bitmap.BeginInit(); + bitmap.StreamSource = localStream; + bitmap.Rotation = rotation; + bitmap.EndInit(); + bitmap.Freeze(); + + callback?.Invoke(bitmap); + } } }; request.AddHeader(Constants.Token, AuthToken); request.AddHeader(Constants.CustomerId, Tenant); - client.ExecuteAsync(request, response => { /*Das übernimmt der ResponseWriter von oben*/ }); + client.ExecuteAsync(request, null); + } + + private static Rotation GetRotationFromExifTag(int value) + { + switch (value) + { + case 6: + return Rotation.Rotate90; + case 8: + return Rotation.Rotate270; + case 3: + return Rotation.Rotate180; + default: + return Rotation.Rotate0; + } } public static void DownloadImageAsync(string uri, string key, CacheCategory cacheCategory, Action callback) diff --git a/PrototypChat/.vs/PrototypChat/v16/.suo b/PrototypChat/.vs/PrototypChat/v16/.suo index bf8b321..b460b1d 100644 Binary files a/PrototypChat/.vs/PrototypChat/v16/.suo and b/PrototypChat/.vs/PrototypChat/v16/.suo differ