Avatar billede nut Nybegynder
12. august 2009 - 20:38 Der er 4 kommentarer

image resize asp.net helst i class

hej eksperter

den image resize i class, er væk, og jeg vil helst gerne lave en ny, men denne gang håber jeg at den kan ligge billederne ind i kategorier, hvilket, jeg aldrig har fået til at virke.

den vil både indeholde .gif, .jpg, .jepg .png

jeg vil selvfølgelig prøve på at lave den selv, men hvordan man gør det er gået i glemmebogen.

håber at i kan hjælpe mig lidt på vej, hvis jeg skulle gå i stå.

hilsen nut
Avatar billede Syska Mester
13. august 2009 - 01:27 #1
Du fyrer bare løs hvis der skulle komme nogen spørgsmål ... men måske du skulle starte førend spørgsmålet kom :-)
Avatar billede Syska Mester
13. august 2009 - 01:27 #2
Du skal nok i hvert fald have fat i klasserne:
Image og Bitmap ...
Avatar billede windcape Praktikant
13. august 2009 - 05:56 #3
Sakset fra mit eget bibliotek:

public static class Imaging
{
    /// <summary>
    /// Scales a image proportions to the given maximum width.
    /// </summary>
    /// <param name="image"></param>
    /// <param name="maxWidth">Maximum width of the thumbnail.</param>
    /// <returns></returns>
    public static Image ScaleHorisontal(this Image image, int maxWidth)
    {
        int width, height;
       
        if(image.Width > image.Height)
        {
            width  = maxWidth;
            height = image.Height * maxWidth / image.Width;
        }
        else
        {
            width  = image.Width * 400 / image.Height;
            height = maxWidth;
        }

        using(Bitmap b = new Bitmap(width, height))
        {
            using(Graphics g = Graphics.FromImage((Image)b))
            {
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.DrawImage(image, 0, 0, width, height);
            }

            try
            {
                return (Image)b.Clone();
            }
            finally
            {
                b.Dispose();
            }
        }
    }     
}


Eksemple på brug:

string filename  = "large.jpg";

string thumbnail = Path.Combine(
    Path.GetTempPath(), Path.GetFileName(fileName)
);

using(Image thumbnailImage = Image.FromFile(fileName).ScaleHorisontal(400))
{
    // Gemt i Systemets TEMP folder, hvorefter du kan flytte det hvorhen du har lyst.
    thumbnailImage.Save(thumbnail);
}
Avatar billede neess Nybegynder
31. august 2009 - 18:59 #4
Hvordan du kan resize et billede.
Her gemmer den i jpeg, men det kan man jo bare lave dynamisk, hvis den skal gemme i andre formater, f.eks. samme som der indlæses fra.

public static void MakeThumbnail(string picture, string destination)
        {
            MakeThumbnail(picture, destination, 280);
        }
        public static void MakeThumbnailFromStream(Stream sr, string destination, int widthPicture)
        {
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(sr);

            int modulus = image.Width / widthPicture;
            int width = image.Width;
            int height = image.Height;
            //image.Dispose();
            //image = null;
            if (modulus > 0)
            {
                width = width / modulus;
                height = height / modulus;
            }
            System.Drawing.Image imageThumb = image.GetThumbnailImage(width, height, null, new IntPtr());
            EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)10000);
            EncoderParameters encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = qualityParam;

            if (File.Exists(destination))
            {
                File.Delete(destination);
            }
            ImageCodecInfo ci = GetEncoder("image/jpeg");
            imageThumb.Save(destination, ci, encoderParams);
        }
        public static void MakeThumbnail(string picture, string destination, int widthPicture)
        {
            //System.Drawing.Image image = System.Drawing.Image.FromFile(picture);
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(picture, false);

            int modulus = image.Width / widthPicture;
            int width = image.Width;
            int height = image.Height;
            //image.Dispose();
            //image = null;
            if (modulus > 0)
            {
                width = width / modulus;
                height = height / modulus;
            }
            System.Drawing.Image imageThumb = image.GetThumbnailImage(width, height, null, new IntPtr());
            EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)100);

            EncoderParameters encoderParams = new EncoderParameters(1);
            encoderParams.Param[0] = qualityParam;

            if (File.Exists(destination))
            {
                File.Delete(destination);
            }
            ImageCodecInfo ci = GetEncoder("image/jpeg");
            imageThumb.Save(destination, ci, encoderParams);
        }
        public static ImageCodecInfo GetEncoder(string mimeType)
        {

            ImageCodecInfo[] encoders = ImageCodecInfo.GetImageDecoders();

            for (int i = 0; i < encoders.Length; ++i)

                if (encoders[i].MimeType == mimeType)

                    return encoders[i];

            return null;

        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester