147 lines
4.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|