Lors du développement d'un site Web, la génération de vignettes est une fonction très courante et pratique. Dans le passé, elle ne pouvait être réalisée qu'à l'aide de composants COM dans ASP, mais elle peut désormais être facilement implémentée dans .NET à l'aide de la puissante bibliothèque de classes de. Le code complet est publié ci-dessous (avec des notes détaillées), reportez-vous à certains articles sur Internet et au contenu lié au SDK .net. Les quatre méthodes de génération sont utilisées pour télécharger des images dans QQROOM Network Home.
/// <résumé>
/// Générer des vignettes
/// </summary>
/// <param name="originalImagePath">Chemin de l'image source (chemin physique)</param>
/// <param name="thumbnailPath">Chemin de la miniature (chemin physique)</param>
/// <param name="width">Largeur de la vignette</param>
/// <param name="height">Hauteur de la vignette</param>
/// <param name="mode">Comment générer des vignettes</param>
public static void MakeThumbnail (string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
Image originaleImage = Image.FromFile(originalImagePath);
int largeur = largeur ;
int hauteur = hauteur ;
entier x = 0 ;
entier y = 0 ;
int ow = originalImage.Width;
int oh = originalImage.Height ;
commutateur (mode)
{
case "HW"://Spécifier la mise à l'échelle de la hauteur et de la largeur (éventuellement déformée)
casser;
cas "W"://Spécifiez la largeur et la hauteur en proportion
toheight = originalImage.Height * width/originalImage.Width;
casser;
case "H"://Spécifiez la hauteur et la largeur en proportion
towidth = originalImage.Width * height/originalImage.Height;
casser;
case "Couper"://Préciser la hauteur et la largeur à couper (sans déformation)
if((double)originalImage.Width/(double)originalImage.Height > (double)à la largeur/(double)à la hauteur)
{
oh = originalImage.Hauteur ;
ow = originalImage.Height*towidth/toheight ;
y = 0 ;
x = (originalImage.Width - ow)/2;
}
autre
{
ow = originalImage.Width;
oh = originalImage.Width*hauteur/largeur ;
x = 0 ;
y = (originalImage.Hauteur - oh)/2;
}
casser;
défaut :
casser;
}
//Créer une nouvelle image bmp
Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
//Créer une nouvelle planche à dessin
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//Définir une méthode d'interpolation de haute qualité
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
// Définir une haute qualité et une faible vitesse pour afficher la fluidité
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//Effacez le canevas et remplissez-le avec une couleur d'arrière-plan transparente
g.Clear(Color.Transparent);
//Dessine la partie spécifiée de l'image originale à la position et à la taille spécifiées
g.DrawImage (originalImage, nouveau Rectangle (0, 0, largeur, hauteur),
nouveau Rectangle (x, y, ow, oh),
GraphicsUnit.Pixel);
essayez
{
//Enregistre la vignette au format jpg
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Système.Exception e)
{
lancez e;
}
enfin
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
Pour la méthode clé Graphics.DrawImage, voir ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm