Verschickte Bilder werden jetzt korrekt rotiert angezeigt.

Die Synchronisation der Kontaktliste nach dem Senden einer Nachricht wird korrekt aktualisiert.
This commit is contained in:
LynJet
2022-06-03 16:40:47 +02:00
parent 04d06d4e3b
commit aa0004ec07
4 changed files with 43 additions and 15 deletions

View File

@@ -642,6 +642,8 @@ namespace ChatController
Chatbox.Text = string.Empty; Chatbox.Text = string.Empty;
Thread.Sleep(500);
DoSynchro(); DoSynchro();
} }
} }

View File

@@ -919,16 +919,16 @@ namespace ChatController.HauptKlassen
var windowMaxWidth = imageWidth; var windowMaxWidth = imageWidth;
var windowMaxHeight = imageHeight; 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); windowMaxWidth = (int)(windowMaxHeight * imageAspectRatio);
} }
else else
{ {
windowMaxWidth = (int)(.9 * primaryScreenWidth2); windowMaxWidth = (int)(.8 * primaryScreenWidth2);
windowMaxHeight = (int)(windowMaxWidth * imageAspectRatio); windowMaxHeight = (int)(windowMaxWidth * imageAspectRatio);
} }
} }
@@ -978,7 +978,7 @@ namespace ChatController.HauptKlassen
public void ShowPicture(string originalImage, long groupId, Action<ImageSource, string> downloadCompletedCallback) public void ShowPicture(string originalImage, long groupId, Action<ImageSource, string> downloadCompletedCallback)
{ {
if(originalImage == null) if(originalImage is null)
{ {
return; return;
} }

View File

@@ -74,27 +74,53 @@ namespace ChatController.Utilities
{ {
ResponseWriter = stream => 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(); image.Save(localStream, image.RawFormat);
bitmap.StreamSource = localStream;
bitmap.EndInit();
bitmap.Freeze();
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.Token, AuthToken);
request.AddHeader(Constants.CustomerId, Tenant); 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<ImageSource> callback) public static void DownloadImageAsync(string uri, string key, CacheCategory cacheCategory, Action<ImageSource> callback)