У меня есть программа для выбора изображения и установки этого выбранного изображения в поле изображения, затем преобразование изображения в поле изображения в массив байтов и сохранение базы данных сервера sql в столбце типа изображения.
В событии нажатия кнопки просмотра я выбираю файл изображения следующим образом.
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);
}
После выбора изображения и установки его изображения окна изображения я конвертирую изображение окна изображения в массив байтов в событии нажатия кнопки сохранения и сохраняю массив байтов в базе данных.
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
Я вызываю метод вот так.
byte[] myArr1 = imageToByteArray(pbPartySymbol.Image);
и я передаю этот массив байтов в базу данных. и это тоже спасает. Но ВСЕ добавленные изображения сохраняются следующим образом. * 0x53797374656D2E427974655B5D * Сохраненные изображения не могут быть возвращены в окно изображения при операции чтения. Что я делаю не так в разделе СОХРАНЕНИЕ?
Вот что я делаю при сохранении операции в форме.
Party ptObj = new Party(myArr1);
if (new PartyOP().saveParty(ptObj))
{
MessageBox.Show("NEW data added");
}
На уровне бизнес-операций это мой код.
public Boolean saveParty(Party ptObj)
{
string query1 = "EXEC insertToParty'" + ptObj.PTSymARR + "'";
return (new DataAccessLayer().executeNonQueries(query1));
}
Вот как я установил свойство в классе Party.
class Party
{
public Party() { }
public Party(byte[] ptSym)
{
this._PTSymARR = ptSym;
}
public byte[] PTSymARR
{
get { return _PTSymARR; }
set { _PTSymARR = value; }
}
}
вот моя хранимая процедура. СОЗДАТЬ ПРОЦЕДУРУ insertToParty (изображение @ptSymbol) AS BEGIN BEGIN TRANSACTION SET NOCOUNT ON; - Запрос INSERT INTO Party (PTSYM) VALUES (@ptSymbol);
Тип данных PTSYM - это тип данных изображения.
Byte[]
, и вы его сохраняете. Что вы ожидаете увидеть? Если вы хотите вернуться к изображению позже, повторите процесс в обратном порядке. - person DonBoitnott   schedule 16.10.2014byte[] myArr1 = imageToByteArray(pbPartySymbol.Image);
и проверить длину этого массива! - person TaW   schedule 16.10.2014myArr1
? - person TaW   schedule 16.10.2014