resize an image and then save it in mysql

1

From a form I want to resize an image only after and then save in mysql, or grab an already saved image in mysql and resize it and then update the registry. Thanks so much if anyone can help me.

* the table in mysql *

CREATE TABLE 'imagemedias' (
  'id' int(11) NOT NULL,
  'imagem' mediumblob,
  'ImagemMimeType' varchar(20) DEFAULT NULL
)

* here is the class *

namespace rsi.Entities
{
    public class ImageMedia : Auxiliar
    {
        public int Id { get; set; }       
        public byte[] Imagem { get; set; }
        public string ImagemMimeType { get; set; }        
    }
}

* here is the form *

<form action="/backend/Images/imagem" method="post" name="form" id="form1" accept-charset="utf-8" enctype="multipart/form-data">
    <input type="file" name="__file"  id="__file" accept="image/*">
    <input type="submit">
</form>

* here is the controller *

[HttpPost]
public ActionResult imagem(HttpPostedFileBase file)
{
    if (file != null)
    {
        ImageMedia imagem = new ImageMedia();
        imagem.Imagem = new byte[file.ContentLength];
        imagem.ImagemMimeType = file.ContentType;
        file.InputStream.Read(imagem.Imagem, 0, file.ContentLength);

        return RedirectToAction("Exibir", new { imagem.Id });
    }

    return null;
}
    
asked by anonymous 11.04.2017 / 23:31

1 answer

0

There is a package for this , but I do not think it's what you want. There is another way to do that is simpler, using WebImage , but the quality is lower.

Example:

using System.Web.Helpers;

[HttpPost]
public ActionResult imagem(HttpPostedFileBase file)
{
    if (file != null)
    {
        ImageMedia imagem = new ImageMedia();
        imagem.Imagem = new byte[file.ContentLength];
        imagem.ImagemMimeType = file.ContentType;
        file.InputStream.Read(imagem.Imagem, 0, file.ContentLength);

        WebImage webimg = new WebImage(file.InputStream);
        webimg.Resize(100, 100); // Mude pro que você precisar
        // Escreva o resto da lógica para salvar aqui

        return RedirectToAction("Exibir", new { imagem.Id });
    }

    return View(); // Aquele null estava bem errado.
}

To get a stream :

var stream = new MemoryStream(webimg.GetBytes());
    
11.04.2017 / 23:42