本文实例讲述了C#实现缩放和剪裁图片的方法。分享给大家供大家参考,具体如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
namespace Project
{
class ImageOperation
{
/// <summary>
/// Resize图片
/// </summary>
/// <param name="bmp">原始Bitmap </param>
/// <param name="newW">新的宽度</param>
/// <param name="newH">新的高度</param>
/// <param name="Mode">保留着,暂时未用</param>
/// <returns>处理以后的图片</returns>
public static Bitmap ResizeImage(Bitmap bmp, int newW, int newH, int Mode)
{
try
{
Bitmap b = new Bitmap(newW, newH);
Graphics g = Graphics.FromImage(b);
// 插值算法的质量
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
g.Dispose();
return b;
}
catch
{
return null;
}
}
/// <summary>
/// 剪裁 -- 用GDI+
/// </summary>
/// <param name="b">原始Bitmap</param>
/// <param name="StartX">开始坐标X</param>
/// <param name="StartY">开始坐标Y</param>
/// <param name="iWidth">宽度</param>
/// <param name="iHeight">高度</param>
/// <returns>剪裁后的Bitmap</returns>
public static Bitmap Cut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight)
{
if (b == null)
{
return null;
}
int w = b.Width;
int h = b.Height;
if (StartX >= w || StartY >= h)
{
return null;
}
if (StartX + iWidth > w)
{
iWidth = w - StartX;
}
if (StartY + iHeight > h)
{
iHeight = h - StartY;
}
try
{
Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(bmpOut);
g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
g.Dispose();
return bmpOut;
}
catch
{
return null;
}
}
}
}
目标其实都是new Rectangle(0, 0, iWidth, iHeight),缩放算法把整个原始图都往目标区域里塞new Rectangle(0, 0, bmp.Width, bmp.Height),而剪裁只是把原始区域上等宽等高的那个区域new Rectangle(StartX, StartY, iWidth, iHeight)1:1的塞到目标区域里。
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#图片操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。
# C#
# 缩放
# 剪裁
# 图片
# C#图片按比例缩放实例
# JS实现按比例缩放图片的方法(附C#版代码)
# C#图片按比例缩放的实现代码
# c#图片缩放图片剪切功能实现(等比缩放)
# C#如何实现图片的剪裁并保存
# c# Base64编码和图片的互相转换代码
# C#保存图片到数据库并读取显示图片的方法
# C#图片压缩的实现方法
# C#实现图片分割方法与代码
# C#(.net)水印图片的生成完整实例
# 程序设计
# 都是
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 更多关于
# 所述
# 使用技巧
# 面向对象
# 等高
# 操作技巧
# 插值
# 讲述了
# summary
# gt
# Resize
# Project
# ImageOperation
# lt
相关文章:
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
c++ stringstream用法详解_c++字符串与数字转换利器
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何高效利用亚马逊云主机搭建企业网站?
建站之星与建站宝盒如何选择最佳方案?
如何访问已购建站主机并解决登录问题?
家庭建站与云服务器建站,如何选择更优?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何做网站制作流程,*游戏网站怎么搭建?
网站制作话术技巧,网站推广做的好怎么话术?
建站之星伪静态规则如何正确配置?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
智能起名网站制作软件有哪些,制作logo的软件?
内网网站制作软件,内网的网站如何发布到外网?
自助网站制作软件,个人如何自助建网站?
购物网站制作公司有哪些,哪个购物网站比较好?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
一键网站制作软件,义乌购一件代发流程?
如何获取开源自助建站系统免费下载链接?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
教学论文网站制作软件有哪些,写论文用什么软件
?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何通过PHP快速构建高效问答网站功能?
如何在阿里云通过域名搭建网站?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
山东云建站价格为何差异显著?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
建站之星安装模板失败:服务器环境不兼容?
北京专业网站制作设计师招聘,北京白云观官方网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
h5网站制作工具有哪些,h5页面制作工具有哪些?
C#怎么使用委托和事件 C# delegate与event编程方法
活动邀请函制作网站有哪些,活动邀请函文案?
如何在阿里云域名上完成建站全流程?
建站之星如何修改网站生成路径?
济南专业网站制作公司,济南信息工程学校怎么样?
开源网站制作软件,开源网站什么意思?
如何零基础开发自助建站系统?完整教程解析
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何快速启动建站代理加盟业务?
建站之星如何快速更换网站模板?
公众号网站制作网页,微信公众号怎么制作?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何在IIS中配置站点IP、端口及主机头?
*请认真填写需求信息,我们会在24小时内与您取得联系。