Picture Box zum Bytearray

Ich habe ein Programm, um ein Bild auszuwählen und dieses ausgewählte Bild in einem Bildfeld festzulegen. Dann konvertiere ich das Bild im Bildfeld in ein Byte-Array und speichere die SQL Server-Datenbank in einer Bildtyp-Spalte.

Klicken Sie auf die Schaltfläche "Durchsuchen", wenn ich die Bilddatei wie folgt auswähle.

OpenFileDialog fop = new OpenFileDialog();
fop.InitialDirectory = @"Desktop";
fop.Filter = "image files|*.jpg;*.png;*.gif";
if (fop.ShowDialog() == DialogResult.OK)
{
     FileStream FS = new FileStream(@fop.FileName, FileMode.Open, FileAccess.Read);  
     pbPartySymbol.Image = new Bitmap(fop.FileName);
     MessageBox.Show("Image Imported Successfully!!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Nach dem Auswählen des Bildes und dem Einstellen des Bildrahmens konvertiere ich das Bildrahmenbild in das Byte-Array im Klickereignis "Speichern" und speichere das Byte-Array in der Datenbank.

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    return ms.ToArray();
}

Ich rufe die Methode so auf.

byte[] myArr1 = imageToByteArray(pbPartySymbol.Image);

und ich übergebe dieses Byte-Array an die Datenbank. und es spart auch. AberALL Die hinzugefügten Bilder werden wie folgt gespeichert. * 0x53797374656D2E427974655B5D * Gespeicherte Bilder können während des Lesevorgangs nicht in die Bildbox zurückgespeichert werden. Was mache ich falsch im SAVING?

Ich speichere den Vorgang folgendermaßen im Formular.

            Party ptObj = new Party(myArr1);
            if (new PartyOP().saveParty(ptObj))
            {
                MessageBox.Show("NEW data added");
            }

In meiner Business Operation-Schicht ist dies mein Code.

          public Boolean saveParty(Party ptObj)
         {
          string query1 = "EXEC insertToParty'" + ptObj.PTSymARR + "'";
           return (new DataAccessLayer().executeNonQueries(query1));
        }

So habe ich die Eigenschaft in der Party-Klasse festgelegt.

class Party
{
    public Party() { }
    public Party(byte[] ptSym) 
    {

        this._PTSymARR = ptSym;

    }
    public byte[] PTSymARR
    {
        get { return _PTSymARR; }
        set { _PTSymARR = value; }
    }


}

hier ist meine gespeicherte Prozedur. CREATE PROCEDURE insertToParty (@ptSymbol image) AS BEGIN BEGIN TRANSACTION SET NOCOUNT ON; --Query INSERT INTO Party (PTSYM) VALUES (@ptSymbol);

Datentyp von PTSYM ist der Bilddatentyp.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage