Saurabh Solanki Ответов: 2

Изображение, преобразованное из двоичных данных, показывает пустые изображения


Изображение, преобразованное из двоичных данных, показывает пустые изображения

код для преобразования двоичной логики в графическую.:
namespace OverHR.Common
{
    public class Common
    {
        public static Image byteArrayToImage(byte[] ba)
        {
            MemoryStream ms = new MemoryStream(ba);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }


    }
}


код для отображения изображений из базы данных:
  @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>


логика получения изображения из базы данных:
public List<ScreenLog> GetScreen()
        {
            using (OverSeasHRDbDataContext ctx1 = new OverSeasHRDbDataContext())
            {
                var lstScr = ctx1.ScreenLogs.Where(p => p.AttendanceId == 193).ToList();
                return lstScr;
            }
        }


Что я уже пробовал:

я попробовал приведенный выше фрагмент

2 Ответов

Рейтинг:
2

mahakaal

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 { }
            }
        }


Рейтинг:
18

pdoxtader

Эти работы:

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();
}


- Пит


Richard Deeming

То GetBuffer метод возвращает полный внутренний буфер, который может содержать дополнительные пустые байты в конце.

Просто использовать ToArray вместо. :)
return ImageStream.ToArray();

pdoxtader

Я действительно думал об этом после того, как опубликовал его. Обновление сейчас...