2011-03-14 4 views
1

J'ai cherché partout un moyen de redimensionner une image avant qu'elle ne soit téléchargée dans ma base de données. À l'heure actuelle, les fichiers sont juste téléchargés et si elles ne sont pas la bonne taille, alors mes pages ressemblent à un gâchis. Comment redimensionner l'image avant de la télécharger dans ma base de données, je voudrais télécharger une image de taille originale, et la taille correcte. Est-ce possible avec ASP.net. J'ai vu quelques tutoriels sur le redimensionnement de l'image, mais aucun d'eux n'a été utile, si quelqu'un peut aider ce serait génial. J'ai commencé à regarder le tutoriel this mais je n'ai pas pu l'implémenter dans mon téléchargement SQL.ASP.net C# Redimensionner l'image Téléchargement SQL

Merci

+0

pouvez-vous partager le code de ce que vous avez essayé jusqu'à présent? – Cyberdrew

+0

Utilisez la bibliothèque http://imageresizing.net pour la meilleure qualité d'image et pour une gestion correcte de la mémoire. En utilisant (MemoryStream ms = new MemoryStream()) {ImageBuilder.Current.Build (postedFile, ms, nouvelle ResizeSettings ("maxwidth = 800 & maxheight = 600 & format = jpg"); return ms.ToArray();} –

Répondre

2

Quelque chose comme ça, j'utilise MVC ainsi le HttpPostedFileBase. Cependant, cela prend l'entrée d'un type d'entrée file et retourne un tableau d'octets, parfait pour le téléchargement sur DB.

using System.Drawing; 
using System.Drawing.Drawing2D; 

private static byte[] PrepImageForUpload(HttpPostedFileBase FileData) 
{ 
    using (Bitmap origImage = new Bitmap(FileData.InputStream)) 
    { 
     int maxWidth = 165; 

     int newWidth = origImage.Width; 
     int newHeight = origImage.Height;   
     if (origImage.Width < newWidth) //Force to max width 
     { 
      newWidth = maxWidth; 
      newHeight = origImage.Height * maxWidth/origImage.Width; 
     } 

     using (Bitmap newImage = new Bitmap(newWidth, newHeight)) 
     { 
      using (Graphics gr = Graphics.FromImage(newImage)) 
      { 
       gr.SmoothingMode = SmoothingMode.AntiAlias; 
       gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
       gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 
       gr.DrawImage(origImage, new Rectangle(0, 0, newWidth, newHeight)); 

       MemoryStream ms = new MemoryStream(); 
       newImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
       return ms.ToArray(); 
      } 
     } 
    } 
} 
Questions connexes