ImagesManip.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Microsoft.Win32;
  2. using System;
  3. using System.IO;
  4. using System.Windows.Media.Imaging;
  5. namespace MyTests
  6. {
  7. internal class ImagesManip
  8. {
  9. public static byte[] BitmapSourceToByteArray(BitmapSource image)
  10. {
  11. #region Кодирование картинки
  12. using (var stream = new MemoryStream())
  13. {
  14. var encoder = new PngBitmapEncoder();
  15. encoder.Frames.Add(BitmapFrame.Create(image));
  16. encoder.Save(stream);
  17. return stream.ToArray();
  18. }
  19. #endregion
  20. }
  21. public static BitmapImage SelectImage()
  22. {
  23. #region Выбор картинки
  24. OpenFileDialog op = new OpenFileDialog
  25. {
  26. Title = "Выбрать изображение",
  27. Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
  28. "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
  29. "Portable Network Graphic (*.png)|*.png"
  30. };
  31. if (op.ShowDialog() == true)
  32. return new BitmapImage(new Uri(op.FileName));
  33. else
  34. return null;
  35. #endregion
  36. }
  37. public static BitmapImage NewImage(Users user)
  38. {
  39. try
  40. {
  41. MemoryStream ms = new MemoryStream(user.Image);
  42. BitmapImage image = new BitmapImage();
  43. image.BeginInit();
  44. image.StreamSource = ms;
  45. image.EndInit();
  46. return image;
  47. }
  48. catch
  49. {
  50. return new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute));
  51. }
  52. }
  53. }
  54. }