Można na dwa sposoby.
Pierwszy sposób polega na skopiowaniu z bazy hex stringu i wstawienie go do DrawImage(), który później za pomocą HexStringToBytes() jest konwertowany do byte[].
public void DrawImage(string hexvalue) { canvas1.Children.Clear(); byte[] byBitmap = HexStringToBytes(hexvalue);
Drugim sposobem jest połączenie się do bazy MSSQL z poziomu programu i wykonanie odpowiednich zapytań, aby odnieść się do komórki z naszym obrazkiem, tzw. Binary Data.
Tutaj już nie korzystamy z HexStringToBytes(), tylko po odpowiednim zapytaniu odwołujemy się do kolumny "pic", gdzie jest zapisany obrazek.
public void DrawImage() { //Połączenie z bazą + zapytanie canvas1.Children.Clear(); byte[] byBitmap = (byte[])result["pic"];
Poniższy przykład przedstawia narysowanie obrazku w canvas z hexstringu.
public void DrawImage(string hexvalue) { canvas1.Children.Clear(); byte[] byBitmap = HexStringToBytes(hexvalue); var Bitmap = ImageFromBuffer(byBitmap); Image NewImg = new Image(); double maxX = canvas1.Width = Bitmap.Width; double maxY = canvas1.Height = Bitmap.Height; NewImg = new Image(); NewImg.Source = Bitmap; NewImg.Width = Bitmap.Width; NewImg.Height = Bitmap.Height; Canvas.SetLeft(NewImg, 0); Canvas.SetTop(NewImg, 0); canvas1.Children.Add(NewImg); } public BitmapImage ImageFromBuffer(Byte[] bytes) { MemoryStream stream = new MemoryStream(bytes); BitmapImage image = new BitmapImage(); image.BeginInit(); image.StreamSource = stream; image.EndInit(); return image; } byte[] HexStringToBytes(string hex) { return Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) .ToArray(); }
Brak komentarzy:
Prześlij komentarz