Bom dia,
Para converter a imagem de base64 para Image, use esta função:
public Image Base64ToImage(string base64String)
{
// Convert base 64 string to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
// Convert byte[] to Image
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
Image image = Image.FromStream(ms, true);
return image;
}
}
Fonte: https://stackoverflow.com/a/18827264/1184708
Para redimensionar a imagem retornada pela função, use este código:
/// <summary>
/// resize an image and maintain aspect ratio
/// </summary>
/// <param name="image">image to resize</param>
/// <param name="newWidth">desired width</param>
/// <param name="maxHeight">max height</param>
/// <param name="onlyResizeIfWider">if image width is smaller than newWidth use image width</param>
/// <returns>resized image</returns>
public static Image Resize(Image image, int newWidth, int maxHeight, bool onlyResizeIfWider)
{
if (onlyResizeIfWider && image.Width <= newWidth) newWidth = image.Width;
var newHeight = image.Height * newWidth / image.Width;
if (newHeight > maxHeight)
{
// Resize with height instead
newWidth = image.Width * maxHeight / image.Height;
newHeight = maxHeight;
}
var res = new Bitmap(newWidth, newHeight);
using (var graphic = Graphics.FromImage(res))
{
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = SmoothingMode.HighQuality;
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphic.CompositingQuality = CompositingQuality.HighQuality;
graphic.DrawImage(image, 0, 0, newWidth, newHeight);
}
return res;
}
Fonte: http://www.c-sharpcorner.com/article/resize-image-in-c-sharp/
Daí você pode colocar este código na sua controller:
public class ImagesController: Controller
{
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
using (var ms = new MemoryStream())
{
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
}
public ActionResult Index(string idDaImagemNoBanco)
{
var image = ...; // Obter do banco e utilizar as funções anteriores para converter de base64 para Image e redimensionar
byte[] imageData = ImageToByArray(image);
return File(imageData, "image/png"); // Might need to adjust the content type based on your actual image type
}
}
Daí no seu HTML você usaria:
<img src="/images/AlgumIdParaAImagem" />
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.