Find a. net code for generating thumbnails from a friend's blog. The effect is very good, so share it with you.
///
/// Generate a thumbnail
///
/// Source image path (physical path)
/// Thumbnail path (physical path)
/// Thumbnail width
/// Thumbnail height
/// How to generate a thumbnail: HW, W, H, Cut
Public static void MakeThumbnail (string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System. Drawing. Image originalImage = System. Drawing. Image. FromFile (originalImagePath );
Int towidth = width;
Int toheight = height;
Int x = 0;
Int y = 0;
Int ow = originalImage. Width;
Int oh = originalImage. Height;
Switch (mode)
{
Case "HW": // specify high-width scaling (possibly deformed)
Break;
Case "W": // specify the width, and the height is proportional.
Toheight = originalImage. Height * width/originalImage. Width;
Break;
Case "H": // specify the height. The width is proportional.
Towidth = originalImage. Width * height/originalImage. Height;
Break;
Case "Cut": // specify the height and width (not deformed)
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;
}
Else
{
Ow = originalImage. Width;
Oh = originalImage. Width * height/towidth;
X = 0;
Y = (originalImage. Height-oh)/2;
}
Break;
Default:
Break;
}
// Create a bmp image
System. Drawing. Image bitmap = new System. Drawing. Bitmap (towidth, toheight );
// Create a canvas
Graphics g = System. Drawing. Graphics. FromImage (bitmap );
// Set a high quality interpolation method
G. InterpolationMode = System. Drawing. Drawing2D. InterpolationMode. High;
// Set high quality and smooth low speed
G. SmoothingMode = System. Drawing. Drawing2D. SmoothingMode. HighQuality;
// Clear the canvas and fill it with a transparent background color
G. Clear (Color. Transparent );
// Draw the specified part of the original image at the specified position and in the specified size
G. DrawImage (originalImage, new Rectangle (0, 0, towidth, toheight ),
New Rectangle (x, y, ow, oh ),
GraphicsUnit. Pixel );
Try
{
// Save the thumbnail in jpg format
Bitmap. Save (thumbnailPath, System. Drawing. Imaging. ImageFormat. Jpeg); // here the error is returned.
}
Catch (System. Exception e)
{
Throw e;
}
Finally
{
OriginalImage. Dispose ();
Bitmap. Dispose ();
G. Dispose ();
}
}