Wyświetlenie zdjęć z bazy danych winForms C#

0

Witajcie chcę wyświetlić wszystkie zdjęcia z bazy danych do flowLayoutPanel lecz podczas próby wyświetlenia wszystkich zdjęć z bazy danych pojawia się błąd: parametr jest nieprawidłowy

        void odczytZdjecia()
        {
            try
            {
                if (polaczenie.State == ConnectionState.Closed)
                    polaczenie.Open();

                using (MySqlCommand komenda = new MySqlCommand("select * from produkty", polaczenie))
                using (MySqlDataReader reader = komenda.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        byte[] pic = reader["obrazek"] as byte[] ?? null;

                        if(pic!=null)
                        {
                            using (MemoryStream mstream = new MemoryStream(pic))
                            {
                                pictures(Image.FromStream(mstream));
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                polaczenie.Close();
            }
           
        }

        PictureBox pictures(Image obrazu)
        {
            PictureBox PB = new PictureBox();
            PB.Image = obrazu;
            flowLayoutPanel1.Controls.Add(PB);

            return PB;
        }
1

W której linii? Jaki opis błędu? "Parametr jest nieprawidłowy" to wygląda mi na ArgumentException.

0

tak jest to ArgumentException.

1

Nie MessageBox wywala tylko Ty, tutaj:

MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);

Zmień ex.Message na ex.ToString() i będziesz widział numer linii.

Poza tym możesz ustawić break pointa i odpalić program w trybie debugowania (F5) i zobaczyć samemu kiedy się program wychrzania. Dodatkowo jeżeli ustawisz, żeby zatrzymywał się program przy wyrzucaniu wyjątków, to nie będziesz potrzebować break pointa, bo program sam się zatrzyma tam gdzie wyjątek jest wyrzucany. To tak w skrócie.

0

System.ArgumentException: Parametr jest nieprawidłowy.
w System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
w System.Drawing.Image.FromStream(Stream stream)
w WindowsFormsApp5.Form1.odczytZdjecia() w C:...\Form1.cs:wiersz 56 czyli pictures(Image.FromStream(mstream));

1

https://docs.microsoft.com/en-us/dotnet/api/system.drawing.image.fromstream?view=netframework-4.8

Exceptions
ArgumentException
The stream does not have a valid image format.

Sprawdź co przychodzi z bazy i odbierasz jako pic.

0

Ale jestem głupi....
jedno zdjęcie w bazie miało złe rozszerzenie....
Dziękuję za pomoc

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