c#工具类之Bitmap缩放帮忙类
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缩放帮忙类的更多相关文章
- Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- 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 ...
- php实现图片缩放功能类
http://www.poluoluo.com/jzxy/201312/255447.html <?php /** * Images类是一个图片处理类 * @package applicatio ...
- PHP按最大宽高等比例缩放图片类
本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...
- C#工具类:Json操作帮助类(转载)
原文转载自C#工具类:Json操作帮助类_IT技术小趣屋. Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来 ...
- 【转载】C#工具类:Json操作帮助类
Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...
- 【转载】 C#工具类:Csv文件转换类
CSV是逗号分隔值格式的文件,其文件以纯文本形式存储表格数据(数字和文本).CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号 ...
- PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113
PHP按最大宽高等比例缩放图片类 http://www.oschina.net/code/snippet_876708_21113 php 等比例缩小图片 http://www.111cn.net/p ...
- 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类
Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...
随机推荐
- c语言学习笔记 for循环的结构
其实感觉for循环没有while循环那么直白好理解. for(i=0;i<n;i++) { dosth(); } i=0是i的初始值. i<n是循环进行的条件. i++是每次循环要做的事情 ...
- 23、sed常用命令
1.匹配与不匹配: n p ! sed -n '/ATTGC/p' file1 ##-n打印匹配到的行输出,默认所有行输出. sed -n '/AT\|GC/p' fil ...
- vuex 数据绑定
操作文档: 安装vuex: cnpm install vuex --save 文档介绍: https://vuex.vuejs.org/guide/modules.html import Vu ...
- 利用AdaBoost方法构建多个弱分类器进行分类
1.AdaBoost 思想 补充:这里的若分类器之间有比较强的依赖关系;对于若依赖关系的分类器一般使用Bagging的方法 弱分类器是指分类效果要比随机猜测效果略好的分类器,我们可以通过构建多个弱分类 ...
- codefirst 关系处理
1.http://www.cnblogs.com/libingql/archive/2013/01/31/2888201.html 2.多对多 protected override void OnMo ...
- MSGPACK和PROTOBUF的故事(MSGPACK明显生产力不足)
作者曾经在2014年测试出MSGPACK的关键字和中文字符有很大的冲突,所以后来放弃了,本文为很多年前写的一个对比,后来我们一直在使用HTTP协议和PROTOBUF. 看看MSGPACK的文档,自称效 ...
- SVN下载地址及注意事项
SVN下载地址:VisualSVN:http://www.visualsvn.com/server/download 服务器端(添加仓库和用户)TortoiseSVN:http://torto ...
- iOS CocoaPods安装与使用 好东西保存
http://www.cnblogs.com/daguo/p/4097263.html http://www.cnblogs.com/pican/p/3939941.html?utm_source=t ...
- redis系列:基于redis的分布式锁
一.介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分为两部分,一个是单机环境, ...
- 客户端 post ,get 访问服务器
private void sendReuestExpansion() { HttpRequest<T> req = this; HttpWebRequest request; try { ...