Bei der Entwicklung einer Website ist das Generieren von Miniaturansichten eine sehr verbreitete und praktische Funktion. Früher konnte dies nur mit Hilfe von COM-Komponenten in ASP erreicht werden, aber jetzt kann es mithilfe der leistungsstarken Klassenbibliothek von problemlos in .NET implementiert werden Der vollständige Code wird unten veröffentlicht (mit detaillierten Anmerkungen). Weitere Informationen finden Sie in einigen Artikeln im Internet und in .net SDK-bezogenen Inhalten. Alle vier Generierungsmethoden werden zum Hochladen von Bildern in QQROOM Network Home verwendet.
/// <Zusammenfassung>
/// Miniaturansichten generieren
/// </summary>
/// <param name="originalImagePath">Quellbildpfad (physischer Pfad)</param>
/// <param name="thumbnailPath">Thumbnail-Pfad (physischer Pfad)</param>
/// <param name="width">Thumbnail-Breite</param>
/// <param name="height">Höhe der Miniaturansicht</param>
/// <param name="mode">So generieren Sie Miniaturansichten</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
Bild originalImage = Image.FromFile(originalImagePath);
int width = width;
int height = Höhe;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
Schalter (Modus)
{
case „HW“://Höhen- und Breitenskalierung angeben (möglicherweise deformiert)
brechen;
case „W“://Geben Sie Breite und Höhe im Verhältnis an
toheight = originalImage.Height * width/originalImage.Width;
brechen;
case „H“://Geben Sie Höhe und Breite im Verhältnis an
towidth = originalImage.Width * height/originalImage.Height;
brechen;
case „Cut“://Geben Sie die zu schneidende Höhe und Breite an (ohne Verformung)
if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height*towidth/toheight;
y = 0;
x = (originalImage.Width - ow)/2;
}
anders
{
ow = originalImage.Width;
oh = originalImage.Width*height/towidth;
x = 0;
y = (originalImage.Height - oh)/2;
}
brechen;
Standard :
brechen;
}
//Erstelle ein neues BMP-Bild
Image bitmap = new System.Drawing.Bitmap(towidth,toheight);
//Erstelle ein neues Zeichenbrett
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//Hochwertige Interpolationsmethode festlegen
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
// Hohe Qualität und niedrige Geschwindigkeit einstellen, um Glätte anzuzeigen
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//Löschen Sie die Leinwand und füllen Sie sie mit einer transparenten Hintergrundfarbe
g.Clear(Color.Transparent);
//Zeichne den angegebenen Teil des Originalbildes an der angegebenen Position und Größe
g.DrawImage(originalImage, neues Rechteck(0, 0, towidth, toheight),
neues Rechteck(x, y, ow,oh),
GraphicsUnit.Pixel);
versuchen
{
//Speichern Sie das Miniaturbild im JPG-Format
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
Catch(System.Exception e)
{
wirf e;
}
Endlich
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
Informationen zur Schlüsselmethode Graphics.DrawImage finden Sie unter ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm
http://www.cnblogs.com/jialine/archive/2006/09/15 /505459.html