本文实例讲述了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
相关文章:
建站之星云端配置指南:模板选择与SEO优化一键生成
制作企业网站建设方案,怎样建设一个公司网站?
h5在线制作网站电脑版下载,h5网页制作软件?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何设计高效校园网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站VPS推荐:2025年高性能服务器配置指南
英语简历制作免费网站推荐,如何将简历翻译成英文?
seo网站制作优化,网站SEO优化步骤有哪些?
如何零成本快速生成个人自助网站?
如何用低价快速搭建高质量网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
建站之星后台管理:高效配置与模板优化提升用户体验
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
建站之星伪静态规则如何设置?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何快速搭建二级域名独立网站?
建站之星安装步骤有哪些常见问题?
c++怎么用jemalloc c++替换默认内存分配器【性能】
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
开封网站制作公司,网络用语开封是什么意思?
如何批量查询域名的建站时间记录?
如何在阿里云虚拟服务器快速搭建网站?
外贸公司网站制作哪家好,maersk船公司官网?
魔方云NAT建站如何实现端口转发?
高端网站建设与定制开发一站式解决方案 中企动力
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
表情包在线制作网站免费,表情包怎么弄?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何选择建站程序?包含哪些必备功能与类型?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
小程序网站制作需要准备什么资料,如何制作小程序?
如何用IIS7快速搭建并优化网站站点?
建站之星价格显示格式升级,你的预算足够吗?
如何在宝塔面板中修改默认建站目录?
nginx修改上传文件大小限制的方法
Python文件管理规范_工程实践说明【指导】
宝塔建站无法访问?如何排查配置与端口问题?
上海网站制作开发公司,上海买房比较好的网站有哪些?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
高防服务器如何保障网站安全无虞?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何用狗爹虚拟主机快速搭建网站?
如何用花生壳三步快速搭建专属网站?
北京制作网站的公司,北京铁路集团官方网站?
制作电商网页,电商供应链怎么做?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站之星代理商如何保障技术支持与售后服务?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。