日期:2014-05-17 浏览次数:20681 次
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""://指定高,宽