高质量缩略图

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

private static Size NewSize(int maxWidth, int maxHeight, int width, int height)

{

double w = 0.0;

double h = 0.0;

double sw = Convert.ToDouble(width);

double sh = Convert.ToDouble(height);

double mw = Convert.ToDouble(maxWidth);

double mh = Convert.ToDouble(maxHeight);

if ( sw < mw && sh < mh )

{

w = sw;

h = sh;

}

else if ( (sw/sh) > (mw/mh) )

{

w = maxWidth;

h = (w * sh)/sw;

}

else

{

h = maxHeight;

w = (h * sw)/sh;

}

return new Size(Convert.ToInt32(w), Convert.ToInt32(h));

}

public static void SendSmallImage(string fileName, string newFile, int maxHeight, int maxWidth)

{

System.Drawing.Image img = System.Drawing.Image.FromFile(fileName);

System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat;

Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height);

Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);

Graphics g = Graphics.FromImage(outBmp);

// 设置画布的描绘质量

g.CompositingQuality = CompositingQuality.HighQuality;

g.SmoothingMode = SmoothingMode.HighQuality;

g.InterpolationMode = InterpolationMode.HighQualityBicubic;

g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height),

0, 0, img.Width, img.Height, GraphicsUnit.Pixel);

g.Dispose();

// 以下代码为保存图片时,设置压缩质量

EncoderParameters encoderParams = new EncoderParameters();

long[] quality = new long[1];

quality[0] = 100;

EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

encoderParams.Param[0] = encoderParam;

//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。

ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();

ImageCodecInfo jpegICI = null;

for (int x = 0; x < arrayICI.Length; x++)

{

if (arrayICI[x].FormatDescription.Equals("JPEG"))

{

jpegICI = arrayICI[x];//设置JPEG编码

break;

}

}

if (jpegICI != null)

{

outBmp.Save(newFile, jpegICI, encoderParams);

}

else

{

outBmp.Save(newFile, thisFormat);

}

img.Dispose();

outBmp.Dispose();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航