Risipa de key_press


Image Resize

Lun Oct 06, 2008 5:29 pm   [26175]

In urma cu cateva zile am avut nevoie, pentru a doua oara, pt ca mi-a mai trebuit si in urma cu cateva luni, o cale de a redimensiona o imagine proportional. Asadar, am scris de doua ori aceleasi, sau aproape aceleasi, linii de cod. Si pentru ca presimt ca o sa am nevoie de ele in viitor, si deoarece nu am gasit o functie ready pe net care sa faca ceea ce imi trebuia mie, m-am gandit s-o pun aici, pentru mine sau pt oricine o sa aiba vre-odata nevoie de as ceva.

Cod:

    /// <summary>
    /// resize the image to specified size. If the second parameter cannot be converted
    /// to int, a default value (110) is used.
    /// </summary>
    /// <param name="img"></param>
    /// <param name="s_size"></param>
    /// <returns></returns>
    private System.Drawing.Image ResizeImage(System.Drawing.Image img, string s_size)
    {
        int size = 110;
        int.TryParse(s_size, out size);
        if (size < 1)
            throw new Exception("Invalid Size");
        int nW, nH;
        if (img.Height > img.Width)
        {
            nH = size;
            nW = img.Width * nH / img.Height;
        }
        else
        {
            nW = size;
            nH = img.Height * nW / img.Width;
        }
        System.Drawing.Image oThmb = new Bitmap(size, size);
        Graphics g = Graphics.FromImage(oThmb);
        g.FillRectangle(Brushes.White, 0, 0, size, size);
        RectangleF r = new RectangleF((size - nW) / 2, (size - nH) / 2, nW, nH);
        g.DrawImage(img, r);
        g.Dispose();
        return oThmb;
    }


Functia poate fi folosita pt a genera thumbnails images asemanatoare (sau identice... cred) cu cele pe care le genereaza windows explorer cand vedem un folder cu fotografii. Eu am folosit-o pt o componenta a unei aplicatii web, un fel de image upload manager. Sunt sigur ca exista si metode mai eficiente de a face redimensionarea, insa deocamdata asta e ce am.

The Trackback URL for this entry is:

http://www.programare.org/trackback.php?e=562

Autor Mesaj
There are no replies for this entry.
Afișează mesajele pentru a le previzualiza:   
Powered by the Blog Mod version 0.2.x by Hyperion
Powered by phpBB © 2001, 2002 phpBB Group
Weblog style by Hyperion