using System; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Net; using System.Windows.Media; using System.Windows.Media.Imaging; namespace ChatController.Utilities { public class Utils { public static ImageSource AvatarToImageSourceConverter(string pAvatarPath, bool pIsEmployee) { return CreateImageSourceFromPath(pAvatarPath, false, pIsEmployee); } public static ImageSource CreateChatGroupPictureImageSource(string pPicturePath, bool pIsGroup, bool pIsEmployee) { return CreateImageSourceFromPath(pPicturePath, pIsGroup, pIsEmployee); } private static ImageSource GetDefaultImageSource(bool pIsGroup, bool pIsEmployee) { var defaultImage = Constants.EmployeeDefaultImagePath; if (pIsGroup) { defaultImage = pIsEmployee ? Constants.TeamDefaultImagePath : Constants.NormalGroupDefaultImagePath; } else if (!pIsEmployee) { defaultImage = Constants.CustomerDefaultImagePath; } var resultBitmapImage = new BitmapImage(); resultBitmapImage.BeginInit(); resultBitmapImage.UriSource = new Uri(defaultImage); resultBitmapImage.EndInit(); return resultBitmapImage; } public static ImageSource CreateImageSourceFromPath(string pPathToImageFile, bool pIsGroup = false, bool pIsEmployee = false) { if (!string.IsNullOrEmpty(pPathToImageFile)) { Bitmap bitmap; var request = WebRequest.Create(pPathToImageFile); using (var response = request.GetResponse()) { using (var stream = response.GetResponseStream()) { if (stream != null) { bitmap = new Bitmap(stream); } else { return GetDefaultImageSource(pIsGroup, pIsEmployee); } } } using (var memoryStream = new MemoryStream()) { bitmap.Save(memoryStream, ImageFormat.Png); memoryStream.Position = 0; var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.StreamSource = memoryStream; bitmapImage.EndInit(); memoryStream.Dispose(); memoryStream.Close(); return bitmapImage; } } return GetDefaultImageSource(pIsGroup, pIsEmployee); } public static ImageSource CreateImageSourceFromSmallerImage(string pUri) { Bitmap bitmap; var request = WebRequest.Create(pUri); using(var response = request.GetResponse()) { using(var stream = response.GetResponseStream()) { if(stream == null) { return null; } bitmap = new Bitmap(stream); } } using(var memoryStream = new MemoryStream()) { bitmap.Save(memoryStream, ImageFormat.Png); memoryStream.Position = 0; var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.StreamSource = memoryStream; bitmapImage.EndInit(); memoryStream.Dispose(); memoryStream.Close(); return bitmapImage; } } public static string ReadStream(WebResponse response) { var dataStream = response.GetResponseStream(); if (dataStream == null) { return null; } var reader = new StreamReader(dataStream); var responseFromServer = reader.ReadToEnd(); dataStream.Dispose(); reader.Dispose(); dataStream.Close(); reader.Close(); return responseFromServer; } } }