Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 17804|Odgovoriti: 0

[WPF] Delovanje slikovnih datotek, bajtov[] in BitmapImage v WPF

[Kopiraj povezavo]
Objavljeno na 16. 12. 2015 17:00:21 | | |
  1. public MainWindow()
  2.         {
  3.             InitializeComponent();
  4.             byte[] b = GetPictureData(@"F:\WPF\TestSolution\TestReatByteFromDB\Images\123.png");
  5.             BitmapImage myimg = ByteArrayToBitmapImage(b);
  6.             this.testImg.Source = myimg;
  7.         }

  8.         public byte[] GetPictureData(string imagepath)
  9.         {
  10.             /**/
  11.             ////根据图片文件的路径使用文件流打开,并保存为byte[]
  12.             FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法
  13.             byte[] byData = new byte[fs.Length];
  14.             fs.Read(byData, 0, byData.Length);
  15.             fs.Close();
  16.             return byData;
  17.         }

  18.         public BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
  19.         {
  20.             BitmapImage bmp = null;

  21.             try
  22.             {
  23.                 bmp = new BitmapImage();
  24.                 bmp.BeginInit();
  25.                 bmp.StreamSource = new MemoryStream(byteArray);
  26.                 bmp.EndInit();
  27.             }
  28.             catch
  29.             {
  30.                 bmp = null;
  31.             }

  32.             return bmp;
  33.         }

  34.         public byte[] BitmapImageToByteArray(BitmapImage bmp)
  35.         {
  36.             byte[] byteArray = null;

  37.             try
  38.             {
  39.                 Stream sMarket = bmp.StreamSource;

  40.                 if (sMarket != null && sMarket.Length > 0)
  41.                 {
  42.                     //很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。
  43.                     sMarket.Position = 0;

  44.                     using (BinaryReader br = new BinaryReader(sMarket))
  45.                     {
  46.                         byteArray = br.ReadBytes((int)sMarket.Length);
  47.                     }
  48.                 }
  49.             }
  50.             catch
  51.             {
  52.                 //other exception handling
  53.             }

  54.             return byteArray;
  55.         }
Kopiraj kodo






Prejšnji:WPF spremeni privzete elemente za zagonsko okno
Naslednji:Bodi previden pri pisanju, poskusi ujeti nekaj časa! In napiši 'vrni se čez nekaj časa'!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com