By using below link i have created the sample which Display Image DataType column in Picture box. Reference link just display VarBinary DataType images to PictureBox.
Also i used Northwind database in which Employee table have Photo column with Image DataType that you can download using the link given below.
Download Northwind Database
To display Image Type Column value data in Picture box
1) Convert Image DataType column value in System.Drawing.Image type Object.
2) Using MemoryStream save it into byte format.
3) Assign bytes value converted to Image to the PictureBox.
C#
private void Form1_Load(object sender, EventArgs e)
{
string constr = @"Data Source=.; Initial Catalog=Northwind; user ID=sa; password=pass@123";
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT EmployeeID, FirstName FROM Employees", conn))
{
DataTable dt = new DataTable();
sda.Fill(dt);
DataRow row = dt.NewRow();
row[0] = 0;
row[1] = "Select Image";
dt.Rows.InsertAt(row, 0);
cmbImages.DataSource = dt;
cmbImages.DisplayMember = "FirstName";
cmbImages.ValueMember = "EmployeeID";
}
}
}
private void cmbImages_SelectionChangeCommitted(object sender, EventArgs e)
{
string constr = @"Data Source=.; Initial Catalog=Northwind; user ID=sa; password=pass@123";
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT Photo FROM Employees WHERE EmployeeID = @Id", conn))
{
cmd.Parameters.AddWithValue("@Id", cmbImages.SelectedValue);
conn.Open();
byte[] bytes = null;
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
// Convert Image DataType column value in Image type Object
System.Drawing.Image img = (System.Drawing.Image)converter.ConvertFrom((byte[])cmd.ExecuteScalar());
// using MemoryStream save it into byte format
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
bytes = ms.ToArray();
}
conn.Close();
// assign bytes value converted to Image to the PictureBox
pictureBox1.Image = Image.FromStream(new MemoryStream(bytes));
}
}
}
}
VB.Net
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim constr As String = "Data Source=.; Initial Catalog=Northwind; user ID=sa; password=pass@123"
Using conn As SqlConnection = New SqlConnection(constr)
Using sda As SqlDataAdapter = New SqlDataAdapter("SELECT EmployeeID, FirstName FROM Employees", conn)
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
Dim row As DataRow = dt.NewRow()
row(0) = 0
row(1) = "Select Image"
dt.Rows.InsertAt(row, 0)
cmbImages.DataSource = dt
cmbImages.DisplayMember = "FirstName"
cmbImages.ValueMember = "EmployeeID"
End Using
End Using
End Sub
Private Sub cmbImages_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs) Handles cmbImages.SelectionChangeCommitted
Dim constr As String = "Data Source=.; Initial Catalog=Northwind; user ID=sa; password=pass@123"
Using conn As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand("SELECT Photo FROM Employees WHERE EmployeeID = @Id", conn)
cmd.Parameters.AddWithValue("@Id", cmbImages.SelectedValue)
conn.Open()
Dim bytes As Byte() = Nothing
Dim converter As System.Drawing.ImageConverter = New System.Drawing.ImageConverter()
Dim img As System.Drawing.Image = CType(converter.ConvertFrom(CType(cmd.ExecuteScalar(), Byte())), System.Drawing.Image)
Using ms As MemoryStream = New MemoryStream()
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
bytes = ms.ToArray()
End Using
conn.Close()
pictureBox1.Image = Image.FromStream(New MemoryStream(bytes))
End Using
End Using
End Sub
Screenshot
