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, , , 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())
{
proportionalWidth = ((float)height) / bitmap.Size.Height * bitmap.Width;
proportionalHeight = height;
}
else if (height.Equals())
{
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#工具类之Bitmap缩放帮忙类的更多相关文章

  1. Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  2. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  3. php实现图片缩放功能类

    http://www.poluoluo.com/jzxy/201312/255447.html <?php /** * Images类是一个图片处理类 * @package applicatio ...

  4. PHP按最大宽高等比例缩放图片类

    本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...

  5. C#工具类:Json操作帮助类(转载)

    原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...

  6. 【转载】C#工具类:Json操作帮助类

    Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...

  7. 【转载】 C#工具类:Csv文件转换类

    CSV是逗号分隔值格式的文件,其文件以纯文本形式存储表格数据(数字和文本).CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号 ...

  8. PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113

    PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113 php 等比例缩小图片 http://www.111cn.net/p ...

  9. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类

    Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...

随机推荐

  1. SpringMVC第二天

    SpringMVC第二天   框架课程 1. 课程计划 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Controller方法 ...

  2. .net对Cookie的简单操作

    1 声明:HttpCookie MyCookie= new HttpCookie("test"); 2增加:MyCookie.Values.Add("key1" ...

  3. 第十课,ROS仿真2

    Rviz 属性 1.下面以turtlebot_stage inRviz为例 首先安装 sudo apt-get install ros-indigo-turtlebot-simulator 运行 ro ...

  4. A. Xor-tree

    题目意思: 给一颗n个节点的树,每个节点有一个值要么是0要么是1,改变某个节点的值时,它的儿子不变,它儿子的儿子翻转,它儿子的儿子的儿子不变,如此类推.给定各个节点的目标值,求最少的翻转次数,使得达到 ...

  5. css3的那些高级选择器一

    css大家都不陌生了,从1996年12月css1正式推出,经历了1998年5月css2,再到2004年2月css2.1,最后一直到2010年推出的css3.css的推出给web带来巨大 的改变,使我们 ...

  6. Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial【摘】

    Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial We learned how to integrate Spring ...

  7. 中介者(Mediator)模式

    中介者(Mediator)模式:用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显示的相互引用,从而使得耦合松散,而且可以独立的改变他们之间的交互 了解<迪米特法则>的朋友就知 ...

  8. windows phone制作引导页

    适用于WP7 WP8+ 源码下载撸这里 制作动画gif小软件下载 小技巧 ①图片是纯色背景:将页面设置跟图片背景一样颜色 ②图片是渐变or其他,切图时候:单独切背景(页面设置这个为背景)跟图片里面元素 ...

  9. MVC c# 调用sql的存储过程

    var hid = new SqlParameter { ParameterName = "HistoryId", Value = history.Id, Direction = ...

  10. 【连载】redis库存操作,分布式锁的四种实现方式[四]--基于Redis lua脚本机制实现分布式锁

    一.redis lua介绍 Redis 提供了非常丰富的指令集,但是用户依然不满足,希望可以自定义扩充若干指令来完成一些特定领域的问题.Redis 为这样的用户场景提供了 lua 脚本支持,用户可以向 ...