102 votes

Créer une image miniature

Je souhaite afficher la vignette en vue grille à partir de l'emplacement du fichier. comment générer celui du fichier .jpeg J'utilise le langage C # avec asp.net

227voto

Russell Troywest Points 5400

Vous souhaitez utiliser GetThumbnailImage dans la classe Image:

http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx

Voici un exemple approximatif qui prend un fichier image et en fait une vignette, puis l’enregistre sur le disque.

     Image image = Image.FromFile(fileName);
    Image thumb = image.GetThumbnailImage(120, 120, ()=>false, IntPtr.Zero);
    thumb.Save(Path.ChangeExtension(fileName, "thumb"));
 

27voto

Priyan R Points 687

Le code suivant va écrire une image proportionnelle à la réponse, vous pouvez modifier le code pour votre but

 public void WriteImage(string path, int width, int height)
        {
            Bitmap srcBmp = new Bitmap(path);
            float ratio = srcBmp.Width / srcBmp.Height;
            SizeF newSize = new SizeF(width, height * ratio);
            Bitmap target = new Bitmap((int) newSize.Width,(int) newSize.Height);
            HttpContext.Response.Clear();
            HttpContext.Response.ContentType = "image/jpeg";
            using (Graphics graphics = Graphics.FromImage(target))
            {
                graphics.CompositingQuality = CompositingQuality.HighSpeed;
                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphics.CompositingMode = CompositingMode.SourceCopy;
                graphics.DrawImage(srcBmp, 0, 0, newSize.Width, newSize.Height);
                using (MemoryStream memoryStream = new MemoryStream()) {
                    target.Save(memoryStream, ImageFormat.Jpeg);
                    memoryStream.WriteTo(HttpContext.Response.OutputStream);
                }
            }
            Response.End();


        }
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X