Thumbnails i ASP.NET

I klassisk ASP så finnes det ingen innebygget funksjonalitet for å generere thumbnails. Da trenger du å bruke tredjeparts-komponenter som for eksempel ASPJpeg. I ASP.NET derimot så finnes et innebygget bibliotek som heter System.Drawing og kan brukes for både thumbnails og andre former av bildemanipulering.

Generere thumbnail fra fil

Nedenfor finner du eksempelkode for å generere en thumbnail fra en fil. Husk at koden må modifiseres litt for at den skal virke for dine bilder. Søkeveien for filene må forandres, og man kan også måtte justere bildetypen om man ikke bruker PNG-bilder.

Koden er skrevet for å brukes i en så kalt codebehind-posisjon og kan trenge modifikasjoner for å virke på riktig måte. Du burde justere namespace og klassenavn etter navn på prosjektet og ASP.NET-formularet ditt.

 

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