【发布时间】:2014-12-11 21:53:29
【问题描述】:
我有一个程序来选择图像并将所选图像设置在图片框中,然后将图像框中的图像转换为字节数组并将 sql server 数据库保存在图像类型列中。
在浏览按钮单击事件中,我正在选择这样的图像文件。
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* 保存的图片在读取操作中无法返回图片框。我在 SAVING 中做错了什么?
这是我在表单中保存操作时所做的。
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 ( @pt符号图像 ) 作为 开始 开始交易 设置无计数; - 询问 插入派对(PTSYM) 值(@ptSymbol);
PTSYM 的数据类型是图像数据类型。
【问题讨论】:
-
您的代码似乎没问题,至少在我看来。 db 列是如何定义的,你如何读回它,那里会发生什么?
-
@TaW 我有一个存储过程要添加。我只是调用它并传递参数列表。 public Boolean saveParty(Party ptObj) { string query1 = "EXEC insertToParty'" + ptObj.PTSymARR + "'"; return (new DataAccessLayer().executeNonQueries(query1));在这里,我将字节数组作为对象属性传递。事情是数据库中所有保存的图像看起来像这样 0x53797374656D2E427974655B5D
-
我迷路了。这是
Byte[],您正在保存它。你期望看到什么?如果您希望稍后将其恢复为图像,请反转该过程。 -
什么是DB数据类型,你用什么DBMS?
-
@DonBoitnott 没什么可看的。请阅读> 数据库中所有保存的图像记录都显示此记录,0x53797374656D2E427974655B5D。不可能所有记录都相同。因为我没有保存相同的图像。
标签: c# image bytearray picturebox