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. Nginx 模块开发

    Nginx 模块概述 Nginx 模块有三种角色: 处理请求并产生输出的 Handler 模块 : 处理由  Handler  产生的输出的 Filter (滤波器)模块: 当出现多个后台 服务器时, ...

  2. PostgreSQL9.3+PostGIS2.1安装配置

    Postgresql——Postgresql是一种对象关系型数据库.下载地址:http://www.postgresql.org/download/ postgis (可选)——是一个空间数据库,它扩 ...

  3. Ubuntu 14.04 安装配置强大的星际译王(stardict)词典

    转载http://blog.csdn.net/huyisu/article/details/53437931

  4. 第八课 ROS的空间描述和变换

    1.tf的实际应用 1)在机器人的配置中 从上面可以看出激光雷达中心距离机器人底座的中心有20cm,激光雷达的中心距机器人底座中心有10cm,如果激光雷达在障碍物前面0.3米,那么机器人底座离障碍物多 ...

  5. hdu 2211 杀人游戏

    设f(N,K)返回最后取出的编号 那么f(n,k)进行第一次选后,剩下n-n/k个人,这剩下的人里最后被取出的编号为f(n-n/k,k)记为x 那么它在前一次队列里的编号则是(x-1)/(k-1)+x ...

  6. 使用Monkey对APP进行随机测试

    Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间 ...

  7. (转)IIS处理并发请求时出现的问题及解决

    原文地址:http://www.cnblogs.com/hgamezoom/p/3082538.html 一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求 ...

  8. poj1840 Eqs(hash+折半枚举)

    Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 The co ...

  9. MongoDB整理笔记のReplica oplog

    主从操作日志oplog MongoDB的Replica Set架构是通过一个日志来存储写操作的,这个日志就叫做"oplog".oplog.rs是一个固定长度的capped coll ...

  10. Oracle ERP系统借贷关系表

    Oracle ERP系统借贷关系表 成本核算会计信息归纳 按照事务处理的来源类型归纳. 一. 采购接收入库和退货: 1.接收:   借:材料采购 (订单价格) 贷:应计负债 (订单价格) 2.入库: ...