Obrazek z PictureBox do strumienia

0

Witam

Mam w PictureBox obraz jpg. Chcę zawartość pictureboxa wrzucić do zmiennie i zapisać to w bazie.
Robię to tak

private byte[] ImageToByteArray(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

byte[] imageAsBytes = ImageToByteArray(pictureBox1.Image);

w tej ostatniej linijce wywala mi błąd W interfejsie GDI+ wystąpił błąd rodzajowy.

Gdzie jest błąd ??
Albo jak to inaczej zrobić ?

0

Nie widziałem nigdy tej klasy na oczy szczerze mówiąc i nie pomogę ci w tym - musiałbyś przejrzeć dokumentację. Ale możesz utworzyć MemoryStream i zapisać do niego obrazek za pomocą metody Save.

0

FileStream zadziałał

0

Poradziłem sobie z powyższym problemem ale utknąłem przy odczycie z bazy i próbie wrzucenia do picturebox.

oto kod

        SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True");
        SqlCommand command = new SqlCommand("select Img from Obrazek where id=1", con);

        SqlDataAdapter dp = new SqlDataAdapter(command);
        DataSet ds = new DataSet("Obrazek");

        byte[] MyData = new byte[0];

        dp.Fill(ds, "Obrazek");
        DataRow myRow;
        myRow = ds.Tables["Obrazek"].Rows[0];

        MyData = (byte[])myRow["Img"];

        MemoryStream stream = new MemoryStream(MyData);

        pictureBox1.Image = System.Drawing.Image.FromStream(stream);

Program się kompiluje i uruchamia ale w momencie wywołania MyData = (byte[])myRow["Img"]; wywala błąd

Nie można rzutować obiektu typu 'System.String' na typ 'System.Byte[]'.

Nie wiem jak sobie z tym poradzić, proszę o jakąś podpowiedź.

0

Czy aby na 100% w bazie danych plik jest zapisany w postaci np. varbinary a nie np. base64 (stąd string) ?

0

pole w bazie jest typu nvarchar(MAX) zmieniłem na varbinary(MAX) i pomogło
dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1