设置GDI+绘图清晰度
GDI+绘制图片时是可以设置绘图清晰度的,清晰绘制比较占系统资源,普通模式绘制速度比较快,这个靠自己权衡了。今天在以前做的一个缩略图生成函数里加了GDI+清晰度设置的代码。
其实设置清晰度很简单,只要加上一下三行代码,就可以让生成的缩略图和PhotoShop生成的效果一样了:
完整的缩略图生成函数是这样的:
其实设置清晰度很简单,只要加上一下三行代码,就可以让生成的缩略图和PhotoShop生成的效果一样了:
1Graphics _g = Graphics.FromImage(_newImg)
2_g.SmoothingMode = SmoothingMode.AntiAlias;
3_g.InterpolationMode = InterpolationMode.HighQualityBicubic;
4_g.CompositingQuality = CompositingQuality.HighQuality;
2_g.SmoothingMode = SmoothingMode.AntiAlias;
3_g.InterpolationMode = InterpolationMode.HighQualityBicubic;
4_g.CompositingQuality = CompositingQuality.HighQuality;
完整的缩略图生成函数是这样的:
1/// 改变图片尺寸
2/// img -- 图片对象
3/// sx -- 水平缩放比例
4/// sy -- 垂直缩放比例
5public static Bitmap ResizeImage(Image img, float sx, float sy)
6{
7 return ResizeImage(img, (int)(img.Width * sx), (int)(img.Height * sy));
8}
9
10/// 改变图片尺寸
11/// img -- 图片对象
12/// width -- 新的宽度
13/// height -- 新的高度
14public static Bitmap ResizeImage(Image img, int width, int height)
15{
16 Bitmap _newImg = new Bitmap(width, height);
17
18 using (Graphics _g = Graphics.FromImage(_newImg))
19 {
20 _g.SmoothingMode = SmoothingMode.AntiAlias;
21 _g.InterpolationMode = InterpolationMode.HighQualityBicubic;
22 _g.CompositingQuality = CompositingQuality.HighQuality;
23 _g.DrawImage(img, 0, 0, width, height);
24 }
25
26 return _newImg;
27}
2/// img -- 图片对象
3/// sx -- 水平缩放比例
4/// sy -- 垂直缩放比例
5public static Bitmap ResizeImage(Image img, float sx, float sy)
6{
7 return ResizeImage(img, (int)(img.Width * sx), (int)(img.Height * sy));
8}
9
10/// 改变图片尺寸
11/// img -- 图片对象
12/// width -- 新的宽度
13/// height -- 新的高度
14public static Bitmap ResizeImage(Image img, int width, int height)
15{
16 Bitmap _newImg = new Bitmap(width, height);
17
18 using (Graphics _g = Graphics.FromImage(_newImg))
19 {
20 _g.SmoothingMode = SmoothingMode.AntiAlias;
21 _g.InterpolationMode = InterpolationMode.HighQualityBicubic;
22 _g.CompositingQuality = CompositingQuality.HighQuality;
23 _g.DrawImage(img, 0, 0, width, height);
24 }
25
26 return _newImg;
27}
我最擅长从零开始创造世界,所以从来不怕失败,它最多也就让我一无所有。