Convert Bytes To Image in asp.net c#

256 Views Asked by At

I am converting image from bytes by FromBase64String method in asp.net C#, but at that time it showing error i.e. System.FormatException: 'Invalid length for a Base-64 char array or string.' in web method.

Here is my code,

[WebMethod]
public static List<CustomerMortgageModel> GetProductList()
{
    string constr = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;

    List<CustomerMortgageModel> customers = new List<CustomerMortgageModel>();
    Service service = new Service();

    using (SqlConnection con = new SqlConnection(constr))
    {
        string qrySelProductDetail = "select * from tbl_MortageDetail " + System.Environment.NewLine;
        
        using (SqlCommand cmd = new SqlCommand(qrySelProductDetail, con))
        {
            con.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    // Setup image and get data stream together
                    System.Drawing.Image img;
                    System.IO.MemoryStream MS = new System.IO.MemoryStream();
                    string b64 = sdr["DesignImage"].ToString().Replace(" ", "+");
                    byte[] b;

                    // Converts the base64 encoded msg to image data
                    b = Convert.FromBase64String(b64);
                    MS = new System.IO.MemoryStream(b);

                    // creates image
                    img = System.Drawing.Image.FromStream(MS);

                    customers.Add(new CustomerMortgageModel
                    {
                             DesignImage = img
                    });
                }
            }
            con.Close();
        }
        
    }
    return customers;
}

BackEnd Code

<asp:GridView ID="gv_productdetail" runat="server" CssClass="display compact" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Image">  
            <ItemTemplate>  
                <img src="data:image/jpeg;base64,<%# Eval("DesignImage") %>" />
            </ItemTemplate>  
        </asp:TemplateField>  

    </Columns>
</asp:GridView>
0

There are 0 best solutions below