Загрузка изображений из varbinary быстрее

Я разрабатываю сайт с использованием ASP.NET а также C# в качестве кода позади.

у меня есть MSSQL база данных, которая содержит изображения, сохраненные как varbinary(max), Я извлекаю их и конвертирую byte массив в Base64String чтобы показать его на моем сайте, используя CSS, как это:

if (cid[Database.MSImageType] != DBNull.Value && ((string)cid[Database.MSImageType]).StartsWith("image/", StringComparison.OrdinalIgnoreCase))
{
    DataSet _imagedata = Database.GetDataOffline("SELECT " + Database.MSImage + " FROM " + table + " WHERE " + Database.Id + "=" + QueryStr["ID"]);
    if (_imagedata.Tables.Count > 0 && _imagedata.Tables[0].Rows.Count == 1)
    {
        DataRow _image = _imagedata.Tables[0].Rows[0];
        string imagedata = null;
        if (_image[Database.MSImage] != DBNull.Value && (imagedata = MSImage.ConvertToImage((byte[])_image[Database.MSImage])) != null)
        {
            takzir2.InnerHtml = "<div id='msbgimage' class='msbgimage' style=\"background-image:url(data:" + (string)cid[Database.MSImageType] + ";base64," + imagedata + ")\"></div>";
            msbgimagefullp.Visible = true;
            msbgimagefullp.InnerHtml = "<div id='msbgimagefull' class='msbgimagefull' style=\"background-image:url(data:" + (string)cid[Database.MSImageType] + ";base64," + imagedata + ")\"></div>";
        }
    }
}

cid это DataRow,

Проблема в том, что загрузка изображения занимает много времени, и я хотел бы знать, как сделать его быстрее, если это возможно. Это функция, которую я использую, чтобы преобразовать ее в Base64:

public static string ConvertToImage(byte[] imagedata)
{
    try
    {
        if (imagedata != null && imagedata.Length > 0)
            return Convert.ToBase64String(imagedata);
    }
    catch { }
    return null;
}

1 ответ

Если скорость показа изображения важна, можете ли вы сохранить предварительно рассчитанную строку base64 изображения в самой базе данных?

Другие вопросы по тегам