C#:从路径显示图片框中的图片

问题描述 投票:0回答:1

大家。我一直在努力使用 Windows 表单将图片加载到 picbox 中,但我在 google 上搜索到的解决方案都不适合我。问题是我将图片路径作为字符串存储到数据库中,例如“C:\Users old ile.jpg”。将路径存储为字符串没有任何问题,但是当我尝试显示它时,我要么收到“内存不足”错误,要么收到“参数无效”错误。

这就是代码:

        int rowindex = dgvItems.CurrentCell.RowIndex;
        string itemId = dgvItems.Rows[rowindex].Cells[0].Value.ToString();
        string query = $"Select PICTURE FROM ITEM WHERE ITEM.ItemId = '{itemId}'";
        runConnection =
        new SqlConnection(runConfig);
        SqlCommand sql = new SqlCommand(
            query, runConnection);
        runConnection.Open();
        SqlDataReader dr = sql.ExecuteReader();
        while (dr.Read() == true)
        {
            picture = dr[0].ToString();
        }
        dr.Close();
        runConnection.Close();

这部分工作得很好,因为当我在 datagriedview 中单击某个项目时,它会选择该项目的当前图片路径。然后将路径存储在图片中。

但是加载时没有任何效果。 picItems.Load(图片); 这里我收到“参数无效”错误;

我也尝试了与 picItems.Image = System.Drawing.Image.FromFile(picture) 相同的代码,但出现内存不足错误。

当我尝试将图片放入调试图中并使用 picItems.Load("filename.jpg") 时,一些图片显示,但许多图片不显示,我再次收到“参数无效”错误。

如果有人有任何可行的解决方案,我将不胜感激。谢谢!

c# parameters path picturebox
1个回答
0
投票

这就是代码:

public void ShowPicture() {

        int rowindex = dgvItems.CurrentCell.RowIndex;
        string itemId = dgvItems.Rows[rowindex].Cells[0].Value.ToString();
        string query = $"Select PICTURE FROM ITEM WHERE ITEM.ItemId = '{itemId}'";
        runConnection =
        new SqlConnection(runConfig);
        SqlCommand sql = new SqlCommand(
            query, runConnection);
        runConnection.Open();
        SqlDataReader dr = sql.ExecuteReader();
        while (dr.Read() == true)
        {
            picture = dr[0].ToString();
        }
        dr.Close();
        runConnection.Close();

        FileStream fs = new FileStream(picture, FileMode.Open, FileAccess.Read);
        picItems.Image?.Dispose();
        using (var image = System.Drawing.Image.FromStream(fs)) - Here's the part I get "parameter not valid" error
        {
            picItems.Image = new System.Drawing.Bitmap(image);
        }


    }
© www.soinside.com 2019 - 2024. All rights reserved.