Generovanie thumbnailu ASP.Net stránkou

Publikoval Michal Kočí dňa 11.09.2004 o 15:31 v kategórii .Net

Včera som potreboval web stránku, ktorá by mi generovala thumbnail JPEG obrázku.

Predstavoval som si to tak, že zavolám ASPX stránku, parametrom jej predám nejaké informácie o obrázku ktorého thumbnail potrebujem a ona mi ho vygeneruje a vráti. Nakoniec som splodil nasledovnú metódu, ktorú volám rovno z metódy Page_Load:

private void GetImageThumbnail(String fileName) { // Vytvorime povodny obrazok System.Drawing.Image imgFull = System.Drawing.Image.FromFile(fileName); // Nechame si vygenerovat thumbnail System.Drawing.Image imgThumb = imgFull.GetThumbnailImage(imgFull.Width / 4, imgFull.Height / 4, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailImageAbort), IntPtr.Zero); // Thumbnail ulozime do streamu MemoryStream msThumb = new MemoryStream(); imgThumb.Save(msThumb, System.Drawing.Imaging.ImageFormat.Jpeg); // Zo streamu spravime byteove pole byte[] bThumb = new byte[msThumb.Length]; msThumb.Position = 0; msThumb.Read(bThumb, 0, (int) msThumb.Length); // Pole zapiseme do odpovedi dotazu Response.ClearContent(); Response.ContentType = "image/jpeg"; Response.BinaryWrite(bThumb); }

Metóda GetThumbnailImage objektu triedy Image (pozor, jedná sa o Image z namespace System.Drawing) preberá ako tretí parameter delegáta, ktorí sa v GDI+ 1.0 nepoužíva (tak praví nápoveda). Napriek tomu musí byť. Jeho návratová hodnota určuje, či sa má prerušiť generovanie thumbnailu, takže ju necháme stále vracať hodnotu false. Vyzerá teda nasledovne:

private bool ThumbnailImageAbort()
{
    return false;
}

Ja som potreboval, aby mi moja metóda GetImageThumbnail generovala JPEG thumbnail so štvrtinovou veľkosťou pôvodného JPEGu. Malou úporavou metódy sa však dá nastaviť aj fixná veľkosť generovaných obrázkov, takisto sa dá vybrať iný formát obrázku, napríklad BMP, GIF. Každému podľa jeho gusta...

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.

Komentáre

Daniel Steigerwald dňa 14.05.2005 o 13:57 - Nepouzivat GetThumbNail

Nepouzivat GetThumbNail metodu, protoze pokud obrazek obsahuje vlastni thumbnail, metoda ho prebere (a vetsinou zvetsi, protoze obsaženej thumb je opravnu maličký) Výsledek je tudíž nespolehlivý - občas OK, občas hnus ..

Libb dňa 11.01.2006 o 10:17 - RE: Generovanie thumbnailu ASP.Net stránkou

mně přijde zytečné generovat to pole bajtů. Nestačí napsat: msThumb.Save(Response.OutputStream...... ? Teda nejsem si jistý jestli ta možnost nepřibyla až v .NET 2.0 ale divil bych se...

Pridať komentár

Máš niečo zaujímavé povedať k článku? Pridaj to k článku ako komentár. Spam, reklamu alebo inak nerelevantné komentáre okamžite mažem.

Pridanie komentára sa nepodarilo. Oprav si prosím chyby.