In my ASP.Net MVC 4 application, I have a View that allows users to hover over an image to get a full-sized preview. It works well.
Currently, I have the image that the user hovers over set to a static width and height of 50 and 50, like so:
<img id="@Model.Value" class="image-preview" height="50" width="50" src="@Model.ImageString" />
@Model.ImageString is a value that gets created by this Action:
[HttpGet]
public string GetImageUrl(Guid fileId)
{
    var file = db.FetchedFiles
        .First(ff => ff.ID == fileId);
    return "data:image/*;base64," + Convert.ToBase64String(file.Data);
}
The above Action is what I'd like to modify. How can I output the Convert.ToBase64String(file.Data) as a thumbnail image with the same proportions as the original file?
Thanks in advance!
I found inspiration somewhere on the web and ended up with this:
string ResizeImage(byte[] data)
{
    using (var ms = new MemoryStream(data))
    {
        var image = Image.FromStream(ms);
        var ratioX = (double)150 / image.Width;
        var ratioY = (double)50 / image.Height;
        var ratio = Math.Min(ratioX, ratioY);
        var width = (int)(image.Width * ratio);
        var height = (int)(image.Height * ratio);
        var newImage = new Bitmap(width, height);
        Graphics.FromImage(newImage).DrawImage(image, 0, 0, width, height);
        Bitmap bmp = new Bitmap(newImage);
        ImageConverter converter = new ImageConverter();
        data = (byte[])converter.ConvertTo(bmp, typeof(byte[]));
        return "data:image/*;base64," + Convert.ToBase64String(data);
    }
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With