See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17804|Vastuse: 0

[WPF] Pildifailide, bait[] ja BitmapImage'i toimimine WPF-is

[Kopeeri link]
Postitatud 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.         }
Kopeeri kood






Eelmine:WPF muudab käivitamisakna vaikimisi elemente
Järgmine:Ole ettevaatlik, et kirjutada, proovi püüda väljaspool aega! Ja kirjuta Return varsti!
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com