Caixa de imagem para matriz de bytes
Eu tenho um programa para selecionar uma imagem e definir essa imagem selecionada em uma caixa de imagem, em seguida, converter a imagem na caixa de imagem em matriz de bytes e salvar a base de dados do servidor sql em uma coluna de tipo de imagem.
No botão Procurar, clique no evento. Estou selecionando o arquivo de imagem assim.
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);
}
Depois de selecionar a imagem e defini-la como imagem da caixa de imagem, estou convertendo a imagem da caixa de imagem para matriz de bytes no evento save do botão Salvar e salvando a matriz de bytes no banco de dados.
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
Estou chamando o método assim.
byte[] myArr1 = imageToByteArray(pbPartySymbol.Image);
e estou passando essa matriz de bytes para o banco de dados. e salva também. MasTUDO as imagens adicionadas são salvas da seguinte forma. * 0x53797374656D2E427974655B5D * As imagens salvas não podem voltar à caixa de imagem na operação de leitura. O que estou fazendo de errado noECONOMIA?
Aqui está o que eu faço ao salvar a operação no formulário.
Party ptObj = new Party(myArr1);
if (new PartyOP().saveParty(ptObj))
{
MessageBox.Show("NEW data added");
}
Na minha camada de operação comercial, esse é o meu código.
public Boolean saveParty(Party ptObj)
{
string query1 = "EXEC insertToParty'" + ptObj.PTSymARR + "'";
return (new DataAccessLayer().executeNonQueries(query1));
}
Aqui está como eu configurei a propriedade na classe Party.
class Party
{
public Party() { }
public Party(byte[] ptSym)
{
this._PTSymARR = ptSym;
}
public byte[] PTSymARR
{
get { return _PTSymARR; }
set { _PTSymARR = value; }
}
}
aqui está o meu procedimento armazenado. CRIAR PROCEDIMENTO insertToParty (@ptSymbol image) COMO INICIAR INICIAR A TRANSAÇÃO CONFIGURAR NOCOUNT ON; - Consulta INSERIR EM VALORES DE PARTIDA (PTSYM) (@ptSymbol);
O tipo de dados PTSYM é do tipo imagem.