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.