1

我有 1 个带有 1 个图片框、1 个文本框和 3 个按钮的 Windows 窗体:LoadFromFile、SaveToDB 和 LoadFromDB。

在 App.config 中使用 LINQ to SQL 连接和以下形式的代码:

private void btnLoadFromFile_Click(object sender, EventArgs e)
{
// open file dialog
OpenFileDialog open = new OpenFileDialog();
// image filters
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png)|*.jpg; *.jpeg; *.gif; *.bmp; *.png";
if (open.ShowDialog() == DialogResult.OK)
{
// display image in picture box
picBox.Image = new Bitmap(open.FileName);
// image file path
textBox1.Text = open.FileName;
}
}

我可以加载图片及其形成路径。

现在我需要将图片保存到[BLOBData]我的表中命名的图像类型字段:tblBLOB (BLOBID, BLOBData). 那么将图片转换为图片类型的代码是什么,然后将图片类型转换为图片在PictureBox控件中显示的代码又是什么呢?

4

1 回答 1

3

在数据库中存储Byte Array为 blob。一些有用的转换方法:

public static byte[] ImageToByteArray(Image imageIn)
{
    var ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    return ms.ToArray();
}

public static Image ByteArrayToImage(byte[] byteArrayIn)
{
    var ms = new MemoryStream(byteArrayIn);
    Image returnImage = Image.FromStream(ms);
    return returnImage;
}

存储到数据库:

OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == DialogResult.OK)
{
    // display image in picture box
    Image img = new Bitmap(open.FileName);
    picBox.Image = img;
    // Byte Array that can store as BLOB in DB
    byte[] blobData = ImageToByteArray(img);
}

并从数据库加载:

picBox.Image = ByteArrayToImage(/* Byte Array of image from BLOB cell in DB */);
于 2012-07-14T23:35:32.277 回答