0

How can I display data type var binary to image from SQL Server

Below the code: SQL:

CREATE TABLE [dwi].[wi_PartVariant](
    [PartVariantId] [int] IDENTITY(1,1) NOT NULL,
    [VariantImage] [varbinary](max) NULL

Inserted Table Value with byte format:

enter image description here

Example Value: 0x660030006600320065003000330033002D0062003800610038002D0034003500610034002D0062003700610031002D003900370037006300320037003100300034006600340061002E004A0050004700

Get all data from table i got Byte format

enter image description here

How to change byte to image format to display user.

Below the Code for your reference.

public List<PartVariant> GetPartVariant(IDapperORM _db, string connection)
        {
            SqlConnection conn = new SqlConnection(connection);
            List<PartVariant> MasterList = new List<PartVariant>();
            SqlCommand com = new SqlCommand("GetPartVariant", conn);
            com.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dt = new DataTable();

            conn.Open();
            da.Fill(dt);
            conn.Close();
            foreach (DataRow dr in dt.Rows)
            {
                MasterList.Add(

                    new PartVariant
                    {

                        PartVariantId = Convert.ToInt32(dr["PartVariantId"]),
                        VariantCode = Convert.ToString(dr["VariantCode"]),
                        Name = Convert.ToString(dr["Name"] == DBNull.Value ? null : dr["Name"].ToString()),
                        Description = Convert.ToString(dr["Description"] == DBNull.Value ? null : dr["Description"].ToString()),
                        VariantColor = Convert.ToString(dr["VariantColor"] == DBNull.Value ? null : dr["VariantColor"].ToString()),
                        PartCode = Convert.ToString(dr["PartCode"] == DBNull.Value ? null : dr["PartCode"].ToString()),
                        VariantImage = (byte[])(dr["VariantImage"] == DBNull.Value ? null : dr["VariantImage"]),
                        Active = Convert.ToBoolean(dr["Active"] == DBNull.Value ? null : dr["Active"].ToString()),
                        CreatedDate = Convert.ToDateTime(dr["CreatedDate"] == DBNull.Value ? null : dr["CreatedDate"].ToString()),
                    }
                );
            }
            return MasterList;
        }

Controller:

public IActionResult PartVariant()
        {
            Part_Bind();
            viewLookup look = new viewLookup();
            var model = look.GetPartVariant(_db, connectionString);
            TempData["partVariant"] = model;
            return View();
        }

HTML:

@if (item.Key.VariantImage != null)
                                            {
                                                <img style="width: 100px; height: 100px; border-radius: 50px;" src="@Url.Content(String.Format("~/images/PartVariant/" + item.Key.VariantImage))" />
                                            }
                                            else
                                            {
                                                <img style="width:100px;height:100px;" src="~/images/avatar-sign.png" />
                                            }

Final output:

enter image description here

Ivin Raj
  • 3,448
  • 2
  • 28
  • 65
  • 1
    Does this answer your question? [ASP.Net MVC: How to display a byte array image from model](https://stackoverflow.com/questions/17952514/asp-net-mvc-how-to-display-a-byte-array-image-from-model) – Cleptus Dec 21 '21 at 12:06
  • The example value `0x660030006600320065003000...` doesn't contain image data, that's UCS-2 string data `f0f2e0...`. If it is actually meant to be image data then there's some crazy encoding applied to it. – AlwaysLearning Dec 21 '21 at 12:25
  • You cannot have an image property. See : https://learn.microsoft.com/en-us/sql/t-sql/data-types/sql-variant-transact-sql?force_isolation=true&view=sql-server-ver15 – jdweng Dec 21 '21 at 13:32

0 Answers0