Files
Chat/ChatController/Utilities/Utils.cs
Lyndon ee981e48c2 tr
2019-04-02 13:43:30 +02:00

147 lines
4.5 KiB
C#

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;
}
}
}