日期:2014-05-17 浏览次数:20603 次
private void CreateThumbnail(string sFileSrcPath, string sFileDstPath, int iSizeLimit) { if (File.Exists(sFileSrcPath)) { System.Drawing.Image image = System.Drawing.Image.FromFile(sFileSrcPath) as System.Drawing.Bitmap; System.Drawing.SizeF size = new System.Drawing.SizeF(image.Width, image.Height); while (size.Width > iSizeLimit || size.Height > iSizeLimit) { size.Height /= 1.1F; size.Width /= 1.1F; } System.Drawing.Image bitmap = new System.Drawing.Bitmap(Convert.ToInt16(size.Width), Convert.ToInt16(size.Height)); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.Clear(Color.Transparent); Rectangle rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height); g.DrawImage(image, rect, new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.GraphicsUnit.Pixel); ImageCodecInfo myImageCodecInfo; Encoder myEncoder; EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0]; myEncoder = Encoder.Quality; myEncoderParameters = new EncoderParameters(1); myEncoderParameter = new EncoderParameter(myEncoder, 100L); myEncoderParameters.Param[0] = myEncoderParameter; bitmap.Save(sFileDstPath, myImageCodecInfo, myEncoderParameters); myEncoderParameter.Dispose(); myEncoderParameters.Dispose(); image.Dispose(); bitmap.Dispose(); g.Dispose(); } }
------解决方案--------------------
mark
------解决方案--------------------
mark
------解决方案--------------------
顶!
------解决方案--------------------
帮顶
------解决方案--------------------
自己修改修改啊。修改 好别忘了开源
------解决方案--------------------
生成高质量缩略图通用函数
/// <summary> /// 生成缩略图 /// </summary> /// <param name=""originalImagePath"">源图路径(物理路径)</param> /// <param name=""thumbnailPath"">缩略图路径(物理路径)</param> /// <param name=""width"">缩略图宽度</param> /// <param name=""height"">缩略图高度</param> /// <param name=""mode"">生成缩略图的方式</param> public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) { Image originalImage = 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""://指定高宽缩放(可能变形) break; case ""W""://指定宽,高按比例 toheight = originalImage.Height * width/originalImage.Width; break; case ""H""://指定高,宽