我有一个ac#应用程序,用于保存和显示记录,当使用图片框保存带有图像的记录时,好像图像保存得很好但在数据库中所有图像似乎都有相同的标记
[BLOB-13B]
使用dbms手动将完全相同的图像手动保存到数据库时,图像标记将为
[BLOB - 2.4KB]
使用此标签我可以使用我的图像显示方法,它会很好
正在转换图像或保存时的某些内容,但我似乎无法理解问题是什么。
这是选择和保存图像的代码
MemoryStream ms = new MemoryStream();
pictureBox.Image.Save(ms, pictureBox.Image.RawFormat);
byte[] img = ms.ToArray();
由于此代码更改图像的方式,在检索图像时,我收到一条错误,上面写着“参数无效” 使用c#和mysqldatabase,虽然数据库类型无关紧要。
任何人都明白出了什么问题?
答案 0 :(得分:1)
对于任何未来的读者。
经过一些研究后我发现了自己的问题,结果发现当我连接SQL字符串并将字节数组放入其中时,字节数组将被更改为遵循字符串参数。因此,数据库中的blob只会说[Blob 13B],而不是它应该的2.7KB
为避免这种情况,您必须使用“参数化”SQL查询而不是标准连接查询。
答案 1 :(得分:0)
听起来您正在将图像的字节数组保存到数据库中,并且需要知道如何将该字节数组转换回图像以便可以显示。你可以用这样的函数来做到这一点:
public Image ConvertByteArrayToImage(byte[] byteArray)
{
MemoryStream ms = new MemoryStream(byteArray, 0, byteArray.Length);
ms.Write(byteArray, 0, byteArray.Length);
Image image = Image.FromStream(ms, true);
return image;
}
更新:再次阅读之后。我不认为我回答了你问的实际问题。听起来你没有将图像转换为字节数组。我会尝试从你的图片框中取出图像并将其放入Image对象中。然后将该Image对象转换为字节数组。而不是保存picturebox.Image.RawFormat