繁体   English   中英

如何将具有 base64 的数据类型长文本转换为从数据库到特定列上的 gridview 的图像?

[英]How to convert data type longtext with base64 to image from data base to gridview on specific column?

我调用数据库以获取数据类型为longtext的列中的数据,其中包含我使用base64从图像编码的字符串

 string insertQuery = "SELECT product_id, picture FROM product WHERE aksi != 'Deleted' ";
 etc...
 dataGridView1.DataSource = dtblProduct;

数据类型为longtext的列是picture

我想用base64 转换列图片中的 longtext longtext数据,并将其与product id一起显示在 gridview

我试过了,但错误提示“输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。 '

string showpic = dataGridView1.Columns[1].ToString();
byte[] imageBytes = Convert.FromBase64String(showpic);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
ms.Write(imageBytes, 0, imageBytes.Length);
Image myimage = Image.FromStream(ms, true);

DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
imageColumn.Image = myimage;

根据你的描述,你想在datagridview的一列中显示一张图片。

我建议在设计表单的时候,在datagridview中添加两列,分别是product_id,picture。

图片列的数据类型为DataGridViewImageColumn。

您可以尝试以下代码来解决此问题。

public void Table()
        {

            dataGridView1.Rows.Clear();
            MySqlConnection conn = new MySqlConnection("…");           
            conn.Open();
            MySqlCommand cmd = new MySqlCommand("select product_id,picture from product WHERE aksi != 'Deleted'", conn);
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                string id, base64;
                id = reader["product_id"].ToString();
                base64 = reader["picture"].ToString();
                byte[] bytes = Convert.FromBase64String(base64);
                MemoryStream memStream = new MemoryStream(bytes);
                BinaryFormatter binFormatter = new BinaryFormatter();
                Image img = (Image)binFormatter.Deserialize(memStream);                            
                dataGridView1.Rows.Add(new object[] { id,img});
            }
            reader.Close();
        }
private void Form1_Load(object sender, EventArgs e)
        {
            Table();
      }

结果: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM