Миниатюры с Asp.net Mvc - PullRequest
       6

Миниатюры с Asp.net Mvc

7 голосов
/ 16 февраля 2011

Кто-нибудь знает способ отображения миниатюрного изображения из байтового массива или, что еще лучше, библиотеки, которая делает это. Спасибо

Ответы [ 4 ]

9 голосов
/ 17 февраля 2011

С ASP.NET MVC 3 и WebMatrix у нас теперь есть хороший стандартный класс WebImage , который имеет среди прочего методы GetImageFromRequest, Resize, Crop и AddTextWatermark.

3 голосов
/ 16 февраля 2011
public ActionResult Thumbnail() {
            byte[] myByte = System.IO.File.ReadAllBytes(location);
            Image i;
            using (MemoryStream ms = new MemoryStream()) {
                ms.Write(myByte , 0 , myByte.Length);
                i = Image.FromStream(ms);
            }
            return File(imageToByteArray(i.GetThumbnailImage(100 , 100 , () => false , IntPtr.Zero)) , "image/jpeg");
        }

        public byte[] imageToByteArray ( System.Drawing.Image imageIn ) {
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms , System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }

Это то, что я использовал.Вместо того, чтобы делать это каждый раз, когда мне нужен эскиз, я создал новый столбец в моей таблице, который был varbinary, и вызывал этот столбец каждый раз, когда мне нужен эскиз.

1 голос
/ 21 июля 2015

Я использовал эту библиотеку для создания эскиза

https://github.com/terjetyl/Simple.ImageResizer

Пример:

    [HttpPost]
    public ActionResult UploadFilePage(HttpPostedFileBase file, BannerCliente banner)
    {
        try
        {
            string filename = Path.GetFileName(file.FileName);

            string crearRutaThumb = Path.Combine(Server.MapPath("~/Carpeta/" + banner.ClienteId), "thumbnail");
            Directory.CreateDirectory(crearRutaThumb);

            string rutaImagenOriginal = Path.Combine(Server.MapPath("~/Carpeta/" + banner.ClienteId), filename);

            var frerf = new ImageResizer(byteFile(rutaImagenOriginal));
            frerf.Resize(100, ImageEncoding.Jpg100);
            frerf.SaveToFile(Path.Combine(Server.MapPath("~/Carpeta/" + banner.ClienteId + "/thumbnail"), file.FileName));
        }
        catch (Exception ex)
        {

            throw ex;
        }

        return View();
    }

    public byte[] byteFile(string fileName)
    {
        return System.IO.File.ReadAllBytes(fileName);
    }
0 голосов
/ 16 октября 2011

Библиотека с открытым исходным кодом *1001* с открытым исходным кодом - это то, что вы ищете

Она поддерживает образы SQL, S3 и файловой системы, а также позволяет изменять размеры, обрезать, вращать и многое другоеманипуляции.

Он также предлагает интерфейс IVirtualImageProvider, если вы хотите создавать «виртуальные образы» вместо простого изменения существующих.

ПРИМЕЧАНИЕ. Подключаемые модули SQL и S3 имеют открытый исходный код, но имеют стоимость 99 долларов.плата за скачивание (которая включает в себя оба).Базовая библиотека бесплатна.

...