Gå til innhold

Dynamisk bildeforminsking "on the fly"


Anbefalte innlegg

Hepp!

 

Jobber med en nyhetsportal, og på hovedsiden skal det legges opp aktuelle saker. Disse har da ulike prioriteringer (hovedsak, sekundær og liten) med tilhørende ulike bildestørrelser. CMS-verktøyet har sine begrensninger, og for å slippe å laste opp tre ulike versjoner av bildet når prioriteringen på artiklene skal rulleres tenker jeg som så:

 

Finnes det et script som tilpasser bildet "on the fly" til riktig størrelse, og viser det frem i korrekt bredde? Mener å ha sett noen slike løsninger i php, men her snakker vi .net eller evnt. javascript.

 

De ulike nyhetstypene har sine egne maler, og det jeg ønsker meg er muligheten til å si at de ulike malene skal kunne vise bildet med f.eks. bilde.jpg?width=500 eller noe i den duren.

 

Setter umåtelig stor pris på all hjelp! :hmm:

Lenke til kommentar
Videoannonse
Annonse

Lag en http handler.

 

Den må registreres i web.config:

 

<httpHandlers>
    <add path="*.jpg" verb="*" type="JPGHandler"/>
</httpHandlers>

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;

/// <summary>
/// Summary description for JPGHandler
/// </summary>
public class JPGHandler : System.Web.IHttpHandler
{
   public JPGHandler()
   {
   }

   #region IHttpHandler Members

   public bool IsReusable
   {
       get
       {
           return true;
       }
   }

   public void ProcessRequest(HttpContext context)
   {
       string LocalFile = context.Server.MapPath(context.Request.Url.LocalPath);
       StreamImage(context, LocalFile);
   }

   private void StreamImage(HttpContext context, string imagePath)
   {
       context.Response.ContentType = "image/jpeg";

       int width = 0;
       int height = 0;
       if (int.TryParse(context.Request.QueryString["w"], out width) &&
           int.TryParse(context.Request.QueryString["h"], out height))
       {
           using (Bitmap b = (Bitmap)Bitmap.FromFile(imagePath))
           using (Bitmap b2 = new Bitmap(b, new Size(width, height)))
           {
               b2.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
           }
       }
       else
       {
           context.Response.WriteFile(imagePath);
       }
   }
   #endregion
}

Endret av jorn79
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...