本文实例讲述了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++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星会员如何解锁更多建站功能?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何在阿里云域名上完成建站全流程?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何在阿里云完成域名注册与建站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
XML的“混合内容”是什么 怎么用DTD或XSD定义
全景视频制作网站有哪些,全景图怎么做成网页?
如何选择高性价比服务器搭建个人网站?
建站主机选虚拟主机还是云服务器更好?
如何选择域名并搭建高效网站?
创业网站制作流程,创业网站可靠吗?
建站之星如何快速更换网站模板?
Android滚轮选择时间控件使用详解
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站之星后台密码遗忘如何找回?
Swift中switch语句区间和元组模式匹配
如何有效防御Web建站篡改攻击?
建站之星安装失败:服务器环境不兼容?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何撰写建站申请书?关键要点有哪些?
已有域名和空间如何快速搭建网站?
Bpmn 2.0的XML文件怎么画流程图
平台云上自助建站如何快速打造专业网站?
建站之星后台密码遗忘或太弱?如何重置与强化?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
建站之星伪静态规则如何正确配置?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
网站制作公司排行榜,四大门户网站排名?
宝塔建站后网页无法访问如何解决?
建站之星安装后如何配置SEO及设计样式?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
深圳网站制作平台,深圳市做网站好的公司有哪些?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
c++ stringstream用法详解_c++字符串与数字转换利器
如何选择香港主机高效搭建外贸独立站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何在香港服务器上快速搭建免备案网站?
如何通过虚拟主机空间快速建站?
北京的网站制作公司有哪些,哪个视频网站最好?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何自定义建站之星网站的导航菜单样式?
如何在橙子建站上传落地页?操作指南详解
移民网站制作流程,怎么看加拿大移民官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。