c#工具类之Bitmap缩放帮忙类
2017-04-05 18:08
225 查看
using System.Drawing; using System.Drawing.Drawing2D; /// <summary> /// BitmapHelper /// </summary> public static class BitmapScaleHelper { /// <summary> /// 缩放图片 /// </summary> /// <param name="bitmap">原图片</param> /// <param name="width">新图片宽度</param> /// <param name="height">新图片高度</param> /// <returns>新图片</returns> public static Bitmap ScaleToSize(this Bitmap bitmap, int width, int height) { if (bitmap.Width == width && bitmap.Height == height) { return bitmap; } var scaledBitmap = new Bitmap(width, height); using (var g = Graphics.FromImage(scaledBitmap)) { g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(bitmap, 0, 0, width, height); } return scaledBitmap; } /// <summary> /// 缩放图片 /// </summary> /// <param name="bitmap">原图片</param> /// <param name="size">新图片大小</param> /// <returns>新图片</returns> public static Bitmap ScaleToSize(this Bitmap bitmap, Size size) { return bitmap.ScaleToSize(size.Width, size.Height); } /// <summary> /// 按比例来缩放 /// </summary> /// <param name="bitmap">原图</param> /// <param name="ratio">ratio大于1,则放大;否则缩小</param> /// <returns>新图片</returns> public static Bitmap ScaleToSize(this Bitmap bitmap, float ratio) { return bitmap.ScaleToSize((int)(bitmap.Width * ratio), (int)(bitmap.Height * ratio)); } /// <summary> /// 按给定长度/宽度等比例缩放 /// </summary> /// <param name="bitmap">原图</param> /// <param name="width">新图片宽度</param> /// <param name="height">新图片高度</param> /// <returns>新图片</returns> public static Bitmap ScaleProportional(this Bitmap bitmap, int width, int height) { float proportionalWidth, proportionalHeight; if (width.Equals(0)) { proportionalWidth = ((float)height) / bitmap.Size.Height * bitmap.Width; proportionalHeight = height; } else if (height.Equals(0)) { proportionalWidth = width; proportionalHeight = ((float)width) / bitmap.Size.Width * bitmap.Height; } else if (((float)width) / bitmap.Size.Width * bitmap.Size.Height <= height) { proportionalWidth = width; proportionalHeight = ((float)width) / bitmap.Size.Width * bitmap.Height; } else { proportionalWidth = ((float)height) / bitmap.Size.Height * bitmap.Width; proportionalHeight = height; } return bitmap.ScaleToSize((int)proportionalWidth, (int)proportionalHeight); } /// <summary> /// 按给定长度/宽度缩放,同时可以设置背景色 /// </summary> /// <param name="bitmap">原图</param> /// <param name="backgroundColor">背景色</param> /// <param name="width">新图片宽度</param> /// <param name="height">新图片高度</param> /// <returns></returns> public static Bitmap ScaleToSize(this Bitmap bitmap, Color backgroundColor, int width, int height) { var scaledBitmap = new Bitmap(width, height); using (var g = Graphics.FromImage(scaledBitmap)) { g.Clear(backgroundColor); var proportionalBitmap = bitmap.ScaleProportional(width, height); var imagePosition = new Point((int)((width - proportionalBitmap.Width) / 2m), (int)((height - proportionalBitmap.Height) / 2m)); g.DrawImage(proportionalBitmap, imagePosition); } return scaledBitmap; } }
相关文章推荐
- C# 转换函数 (Stream to Byte[],Byte to Image,Image to Byte[],Image缩放,Byte[] to Bitmap)
- C# Bitmap 缩放拉伸
- 工具类--BitmapUtil图片转换,图片缩放,旋转图片
- (转)打印相关_C#图片处理Bitmap位图缩放和剪裁
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (第2版) (C# DIY HttpWebClient)
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (第2版) (C# DIY HttpWebClient) 收藏
- .Net/C#控制台应用程序实现磁盘目录文件搜索的工具类 【本示例简体转繁体】
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)
- 如何在C#中实现图片缩放
- /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类【转】
- /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类【转】
- Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)
- Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (转,尚未整理)
- 如何在C#中实现图片缩放
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类
- 请帮忙~~各位大哥,C#编程 用socket套接字实现文件和文字的传输 怎么编写??????
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)
- .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (第2版) (C# DIY HttpWebClient)
- C#.NET中图像缩放