Announcement

Collapse
No announcement yet.

Image to Binary und anders herum

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Na komm, jetz wo du den schwierigsten Teil hinter dir hast.

    Jetz kriegen wir das auch noch hin, dass das Image gespeichert wird.

    Ich schreib mal ne kleine Testapp. Meld mich gleich wieder
    Mitarbeiterführung ist:
    Den Mitarbeiter so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet!

    Comment


    • #17
      Danke Stefan,
      das ist wirklich sehr nett von dir!

      Comment


      • #18
        Sodala, hier ein kleines Beispiel.
        Ich lese eine bmp Datei ein und leg diese in der Datenbank ab.
        Anschließend les ich die Daten wieder aus und schreib sie in ne neue bmp Datei.

        Beide Dateien schaun nach diesem Prozedere zumindest gleich aus

        [highlight=c#]

        public static void Main(string[] args) {
        FileStream fs = new FileStream(/*deineBildDatei*/, FileMode.Open);

        byte[] imageData;

        BinaryReader reader = new BinaryReader(fs);
        imageData = reader.ReadBytes((int)fs.Length);

        fs.Close();

        SqlConnection connection = new SqlConnection(/*dein connectionstring*/);

        connection.Open();

        SqlCommand command = connection.CreateCommand();

        command.CommandText = "Update <tabelle> set IMAGECOLUMN = @imageData where id = '<DEINE ID>'";

        command.Parameters.AddWithValue("imageData", imageData);

        command.ExecuteNonQuery();



        SqlCommand getImage = connection.CreateCommand();

        getImage.CommandText = "Select imagecolumn from <tabelle> where id = '<deineid>'";

        object result = getImage.ExecuteScalar();

        byte[] readBytes;
        if (result != null)
        {
        readBytes = (byte[])result;
        FileStream fs2 = new FileStream("C:\\readBmp.bmp", FileMode.OpenOrCreate);

        fs2.Write(readBytes, 0, (int)readBytes.Length);

        fs2.Close();
        }
        }[/highlight]

        P.S.: Kann mir mal jemand sagen was ich falsch mache, dass er mir bei codehighlighting hier im forum die eckigen Klammern nicht erkennt?? wie beim byte (array) oben
        Mitarbeiterführung ist:
        Den Mitarbeiter so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet!

        Comment


        • #19
          Hey, ich habe es jetzt bei mir so eingebaut. Es scheint zu gehen. Er lässt mich nur in kein Verzeichnis schreiben! Weder Eigene Dateien noch eine leere Partion oder aufn Desktop. Habe Windows Vista
          Schade, bräuchste nurnoch der PictureBox die Datei zuweisen!

          Danke auf jeden Fall schon mal! War eine sehr geduldige und nette Hilfe

          Comment


          • #20
            Kein Problem, hab ich gern gemacht.

            Also zu deinem Problem wegen Datei speichern.
            Der Grund liegt wahrscheinlich an der Benutzersteuerung wenn du die Anwendung als Administrator ausführst sollte das Problem nicht auftreten.
            Kurz, eigentlich ist es korrekt dass du nicht speichern darfst. Man müsste vorher Prüfen ob man in ein Verzeichnis schreiben darf.

            Nichts desto trotz, ich bau das noch so um, dass du keine Datei speichern musst, sondern dass du ein Image an die PictureBox binden kannst. Meld mich gleich wieder.

            Gruß Stefan
            Mitarbeiterführung ist:
            Den Mitarbeiter so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet!

            Comment


            • #21
              Sodala, an dem Beispiel kannst du dich orientieren wenn du das ganze über nen MemoryStream machst und dann daraus ein Image baust.

              [highlight=c#]
              object result = getImage.ExecuteScalar();

              byte[] readBytes;
              if (result != null)
              {
              readBytes = (byte[])result;
              MemoryStream ms = new MemoryStream();

              ms.Write(readBytes, 0, (int)readBytes.Length);

              pictureBox1.Image = Image.FromStream(ms);

              ms.Close();
              }

              [/highlight]

              Grüßle
              Stefan
              Mitarbeiterführung ist:
              Den Mitarbeiter so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet!

              Comment


              • #22
                Danke Stefan,
                ich habe gerad nur ein Problem! Die Methoden habe in in der KLasse Sql.cs eingebaut. Die Form wird über ein DatagridView aufgerufen und bekommt eine ID übergeben anhand der das gewählte Tier eingelesen wird.
                Wie kann nur das Image übergeben, denn public Image getImage() ist nicht erlaubt. WOllte er sonst mit return zurückgeben!

                Gruß
                Matthias

                Comment


                • #23
                  Das Problem hab ich jetz leider nicht ganz verstanden, kannst du ein paar Codebeispiele posten und detailierter erklären wo das Problem auftritt?

                  Grüßle
                  Stefan
                  Mitarbeiterführung ist:
                  Den Mitarbeiter so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet!

                  Comment

                  Working...
                  X