Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 17804|Antwoord: 0

[WPF] Werking van afbeeldingsbestanden, byte[], en BitmapImage in WPF

[Link kopiëren]
Geplaatst op 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.         }
Code kopiëren






Vorig:WPF wijzigt de standaarditems voor het launchvenster
Volgend:Wees voorzichtig om buiten een tijdje te schrijven en te vangen! En schrijf 'return in while'!
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com