/// <summary> /// 获取缩略图尺寸 /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="mode"></param> /// <param name="src"></param> /// <returns></returns> public static ThumbSize getTargetSize(int width, int height, SaveThumbnailMode mode, Image src) { ThumbSize t = new ThumbSize(); t.Src = new Size(src.Width, src.Height); t.Point = new Point(0, 0); if (mode == SaveThumbnailMode.ByWidth) { int newHeight = src.Height * width / src.Width; t.New = new Size(width, newHeight); return(t); } else if (mode == SaveThumbnailMode.ByHeight) { int newWidth = src.Width * height / src.Height; t.New = new Size(newWidth, height); return(t); } else if (mode == SaveThumbnailMode.ByWidthHeight) { t.New = new Size(width, height); return(t); } else if (mode == SaveThumbnailMode.Cut) { return(getCutSize(width, height, mode, src)); } return(getAutoSize(width, height, mode, src)); }
/// <summary> /// 保存缩略图到磁盘(可指定宽高,可指定缩放模式) /// </summary> /// <param name="srcPath"></param> /// <param name="destPath"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="mode"></param> public static void SaveThumbnail(String srcPath, String destPath, int width, int height, SaveThumbnailMode mode) { try { using (Image srcImg = Image.FromFile(srcPath)) { ThumbSize t = getTargetSize(width, height, mode, srcImg); using (Bitmap newImg = new Bitmap(t.New.Width, t.New.Height)) { using (Graphics g = Graphics.FromImage(newImg)) { g.InterpolationMode = InterpolationMode.High; g.SmoothingMode = SmoothingMode.HighQuality; g.Clear(Color.White); g.DrawImage(srcImg, t.getNewRect(), t.getRect(), GraphicsUnit.Pixel); try { newImg.Save(destPath, ImageFormat.Jpeg); } catch (Exception e) { throw e; } } } } } catch (OutOfMemoryException ex) { logger.Error("file format error: " + srcPath); } }
private static ThumbSize getCutSize(int width, int height, SaveThumbnailMode mode, Image src) { ThumbSize t = new ThumbSize(); if ((double)src.Width / (double)src.Height > (double)width / (double)height) { int newWidth = src.Height * width / height; t.Src = new Size(newWidth, src.Height); t.New = new Size(width, height); t.Point = new Point((src.Width - newWidth) / 2, 0); } else { int newHeight = src.Width * height / width; t.Src = new Size(src.Width, newHeight); t.New = new Size(width, height); t.Point = new Point(0, (src.Height - newHeight) / 2); } return(t); }
private static ThumbSize getAutoSize(int width, int height, SaveThumbnailMode mode, Image src) { ThumbSize t = new ThumbSize(); t.Src = new Size(src.Width, src.Height); t.Point = new Point(0, 0); int newWidth = width; int newHeight = height; if ((double)src.Width / (double)src.Height > (double)width / (double)height) { newHeight = src.Height * width / src.Width; } else { newWidth = src.Width * height / src.Height; } t.New = new Size(newWidth, newHeight); return(t); }
private static ThumbSize getCutSize( int width, int height, SaveThumbnailMode mode, Image src ) { ThumbSize t = new ThumbSize(); if ((double)src.Width / (double)src.Height > (double)width / (double)height) { int newWidth = src.Height * width / height; t.Src = new Size( newWidth, src.Height ); t.New = new Size( width, height ); t.Point = new Point( (src.Width - newWidth) / 2, 0 ); } else { int newHeight = src.Width * height / width; t.Src = new Size( src.Width, newHeight ); t.New = new Size( width, height ); t.Point = new Point( 0, (src.Height - newHeight) / 2 ); } return t; }
private static ThumbSize getAutoSize( int width, int height, SaveThumbnailMode mode, Image src ) { ThumbSize t = new ThumbSize(); t.Src = new Size( src.Width, src.Height ); t.Point = new Point( 0, 0 ); int newWidth = width; int newHeight = height; if ((double)src.Width / (double)src.Height > (double)width / (double)height) newHeight = src.Height * width / src.Width; else newWidth = src.Width * height / src.Height; t.New = new Size( newWidth, newHeight ); return t; }
/// <summary> /// 获取缩略图尺寸 /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="mode"></param> /// <param name="src"></param> /// <returns></returns> public static ThumbSize getTargetSize( int width, int height, SaveThumbnailMode mode, Image src ) { ThumbSize t = new ThumbSize(); t.Src = new Size( src.Width, src.Height ); t.Point = new Point( 0, 0 ); if (mode == SaveThumbnailMode.ByWidth) { int newHeight = src.Height * width / src.Width; t.New = new Size( width, newHeight ); return t; } else if (mode == SaveThumbnailMode.ByHeight) { int newWidth = src.Width * height / src.Height; t.New = new Size( newWidth, height ); return t; } else if (mode == SaveThumbnailMode.ByWidthHeight) { t.New = new Size( width, height ); return t; } else if (mode == SaveThumbnailMode.Cut) { return getCutSize( width, height, mode, src ); } return getAutoSize( width, height, mode, src ); }