1. Home
  2. Utveckling/Teknik
  3. Thumbnails i ASP.NET
  1. Home
  2. Övrigt
  3. Thumbnails i ASP.NET

Thumbnails i ASP.NET

I klassisk ASP så finns det ingen inbyggd funktionalitet för att generera thumbnails. Då behöver man använda tredjeparts-komponenter som t.ex. ASPJpeg. I ASP.NET däremot så finns det ett inbyggt bibliotek som heter System.Drawing och kan användas för både thumbnails och annan form av bildmanipulering.

Generera thumbnail från fil

Nedan finner du exempelkod för att generera en thumbnail ifrån en fil. Notera dock att koden måste modifieras något för att fungera för just din bild. Sökvägen till filen måste ändras, och man kan även behöva justera bildtypen om man inte använder PNG-bilder.

Koden är skriven för att användas i så kallat codebehind-läge och kan behöva modifikationer för att fungera korrekt annars. Du bör justera namespace och klassnamn efter namn på ditt projekt och ditt ASP.NET-formulär.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace MyProject
{
    public partial class MyPage: System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Prepare callback
            System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

            // Read source data
            System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath("./images/test.png"));

            // Generate thumbnail
            int width = img.Width / 4;
            int height = img.Height / 4;
            System.Drawing.Image thumb = img.GetThumbnailImage(width, height, myCallback, IntPtr.Zero);

            // Output
            Response.Clear();
            Response.ClearHeaders();
            Response.AddHeader("Content-Type", "image/png");
            MemoryStream ms = new MemoryStream();
            thumb.Save(ms, ImageFormat.Png);
            ms.WriteTo(Context.Response.OutputStream);
            Response.End();
        }

        private bool ThumbnailCallback()
        {
            return false;
        }
    }
}
Was this article helpful?

Related Articles