Click here to Skip to main content
15,888,113 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Image Converted From binary data shows blank images

code for converting binary to image logic.:
C#
namespace OverHR.Common
{
    public class Common
    {
        public static Image byteArrayToImage(byte[] ba)
        {
            MemoryStream ms = new MemoryStream(ba);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }


    }
}


code for displaying images from database:
C#
  @model List<OverHR.DAL.ScreenLog>

<table class="table table-striped">
    <tr>
        <th>Pic</th>

    </tr>

    <tbody>
        @foreach (var item in Model)
        {           
            var image=@item.ScreenPic;

            <tr>
                <td>
                    <img src="@OverHR.Common.Common.byteArrayToImage(image.ToArray())" width="320" height="240">
                </td>       
            </tr>
        }
    </tbody>
</table>


logic for getting image from the database:
C#
public List<ScreenLog> GetScreen()
        {
            using (OverSeasHRDbDataContext ctx1 = new OverSeasHRDbDataContext())
            {
                var lstScr = ctx1.ScreenLogs.Where(p => p.AttendanceId == 193).ToList();
                return lstScr;
            }
        }


What I have tried:

i have tried the snippet given above
Posted
Updated 2-Aug-16 4:16am

These work:

C#
public Image ByteArrayToImage(byte[] ByteArray)
{
    return Image.FromStream(new MemoryStream(ByteArray));
}

public byte[] ImageToByteArray(ref Image NewImage)
{
    MemoryStream ImageStream = new MemoryStream();

    NewImage.Save(ImageStream, ImageFormat.Jpeg);
    return ImageStream.ToArray();
}


- Pete
 
Share this answer
 
v2
Comments
Richard Deeming 2-Aug-16 14:24pm    
The GetBuffer method returns the full internal buffer, which might contain extra blank bytes at the end.

Just use ToArray instead. :)
return ImageStream.ToArray();
pdoxtader 2-Aug-16 14:27pm    
I was actually thinking about that after I posted it. Updating now...
C#
public void SaveImage(string base64, string filenmae)
        {
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Convert.FromBase64String(base64)))
            {
                try
                {
                    using (Bitmap bm2 = new Bitmap(ms))
                    {
                        string str1 = textBox2.Text;
                        bm2.Save(filename);
                    }
                }
                catch { }
            }
        }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900