/// <summary>
/// 从图片中截取一部分图片
/// </summary>
/// <param name="fromImagePath">来源图片地址</param>
/// <param name="nX">从偏移X坐标位置开始截取</param>
/// <param name="nY">从偏移Y坐标位置开始截取</param>
/// <param name="toImagePath">保存图片地址</param>
/// <param name="width">保存图片的宽度</param>
/// <param name="height">保存图片的高度</param>
/// <returns></returns>
public void CaptureImage(string fromImagePath, int nX, int nY, string toImagePath, int width, int height)
{
//原图片文件
Image fromImage = Image.FromFile(fromImagePath);
//创建新图位图
Bitmap bitmap = new Bitmap(width, height);
//创建作图区域
Graphics graphic = Graphics.FromImage(bitmap);
//截取原图相应区域写入作图区
graphic.DrawImage(fromImage, , , new Rectangle(nX, nY, width, height), GraphicsUnit.Pixel);
//从作图区生成新图
Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap());
//保存图片
saveImage.Save(toImagePath, ImageFormat.Png);
//释放资源
saveImage.Dispose();
graphic.Dispose();
bitmap.Dispose();
}
        public static Image CaptureImage(Image fromImage, int offsetX, int offsetY,int width, int height)
{
//创建新图位图
Bitmap bitmap = new Bitmap(width, height);
//创建作图区域
Graphics graphic = Graphics.FromImage(bitmap);
//截取原图相应区域写入作图区
graphic.DrawImage(fromImage, , , new Rectangle(offsetX, offsetY, width, height), GraphicsUnit.Pixel);
//从作图区生成新图
Image saveImage = Image.FromHbitmap(bitmap.GetHbitmap());
//释放资源
//saveImage.Dispose();
graphic.Dispose();
bitmap.Dispose();
return saveImage;
} /// <summary>
/// 截取图片区域,返回所截取的图片
/// </summary>
/// <param name="SrcImage"></param>
/// <param name="pos"></param>
/// <param name="cutWidth"></param>
/// <param name="cutHeight"></param>
/// <returns></returns>
public static Image cutImage(Image SrcImage, int nX, int nY, int cutWidth, int cutHeight)
{
Image cutedImage = null;
//先初始化一个位图对象,来存储截取后的图像
Bitmap bmpDest = new Bitmap(cutWidth, cutHeight, PixelFormat.Format32bppRgb);
Graphics g = Graphics.FromImage(bmpDest);
//矩形定义,将要在被截取的图像上要截取的图像区域的左顶点位置和截取的大小
Rectangle rectSource = new Rectangle(nX, nY, cutWidth, cutHeight);
//矩形定义,将要把 截取的图像区域 绘制到初始化的位图的位置和大小
//rectDest说明,将把截取的区域,从位图左顶点开始绘制,绘制截取的区域原来大小
Rectangle rectDest = new Rectangle(, , cutWidth, cutHeight);
//第一个参数就是加载你要截取的图像对象,第二个和第三个参数及如上所说定义截取和绘制图像过程中的相关属性,第四个属性定义了属性值所使用的度量单位
g.DrawImage(SrcImage, rectDest, rectSource, GraphicsUnit.Pixel);
PixelProcess(bmpDest);
//在GUI上显示被截取的图像
cutedImage = (Image)bmpDest;
g.Dispose();
return cutedImage;
}
//图片透像素
public static void PixelProcess(Bitmap bmp)
{
Color colorTransparent = bmp.GetPixel(, );
bmp.MakeTransparent(colorTransparent);
}

C# 从图片中截取一部分图片,并返回所截取的图片的更多相关文章

  1. C# 截取图片区域,并返回所截取的图片

    /// <summary> /// 截取图片区域,返回所截取的图片 /// </summary> /// <param name="SrcImage" ...

  2. C#从大图中截取一部分图片

    #region 从大图中截取一部分图片 /// <summary> /// 从大图中截取一部分图片 /// </summary> /// <param name=&quo ...

  3. php如何截取出视频中的指定帧作为图片

    php如何截取出视频中的指定帧作为图片 一.总结 一句话总结:截取视频指定帧为图片,php ffmpeg扩展已经完美实现,并且php ffmpeg是开源的 二.php如何截取出视频中的指定帧作为图片 ...

  4. 【转载】C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte

    C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte 转载:http://www.itdos.com/Mvc/20150302/0741255.htm ...

  5. .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现

    在最新版的 .NET 平台中,微软在逐步放弃 System.Drawing.Imaging ,给出的理由如下: System.Drawing命名空间对某些操作系统和应用程序类型有一些限制. 在Wind ...

  6. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

    本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...

  7. imagepool前端图片加载管理器(JavaScript图片连接池)

    前言 imagepool是一款管理图片加载的JS工具,通过imagepool可以控制图片并发加载个数. 对于图片加载,最原始的方式就是直接写个img标签,比如:<img src="图片 ...

  8. UIImage 裁剪图片和等比列缩放图片

    本文转载至 http://blog.csdn.net/cuiweijie3/article/details/9514293 转自 http://www.tedz.me/ios/uiimage-crop ...

  9. PHP的图片处理类(缩放、加图片水印和剪裁)

    <!--test.php文件内容--> <?php //包含这个类image.class.php include "image.class.php"; $img ...

随机推荐

  1. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]

    由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...

  2. netcore 创建腾讯云私有镜像 发布到docker 实战

    上一篇博客写的 netcoer上传到docker ,编译 并发布,传送门:FineUICore基础版部署到docker实战 这是一种笨方法,理想的方法是,在本地编译成镜像,然后推送到镜像仓库,服务器的 ...

  3. C语言笔记 07_枚举&指针

    emum(枚举) 枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读. 枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,--}; 举个例子,比如:一星期有 7 天,如果 ...

  4. SAP MM ME57界面看到的供应源跟Source List主数据不一致?

    SAP MM ME57界面看到的供应源跟Source List主数据不一致? ME57,为如下的PR单据分配供应源, 发现找不到想要分配的供应源. ME03 去看Source List主数据, 黄色标 ...

  5. git 常用操作汇总

    1. 如何查看当前分支是从哪个分支创建来的?  git reflog --date=local 当前分支名称 2. 查看当前分支 git branch 当前分支前面会显示 * 号  3.切换到某个分支 ...

  6. 群晖NAS再再折腾

    问题 最近电信把我的公网地址收回去了,之前做好的网络端口映射失效了,在公司已经不能愉快地访问家里的网络.原先网络结构示意图如下: (直接访问方案网络结构图)   只需要对电信光猫(也是个路由器)和家用 ...

  7. js 日期格式化小问题

    看一个图 toLocaleString 的格式是 yyyy/MM/d , 想要 yyyy/MM/dd, toISOString 的格式基本满足, 本想直接 split("T"),  ...

  8. js实现常见排序算法

    电脑配置 CPU:AMD X4 640 内存: 宏想 DDR3 1600MHz 8g 主板:华擎 980DE3/U3S3 R2.0 浏览器:chrome 79.0.3945.88(正式版本) (64 ...

  9. 第421期 Python 周刊

    新闻 感谢 Guido 链接: https://blog.dropbox.com/topics/company/thank-you--guido Python之父 Guido van Rossum 即 ...

  10. IO - 同步 异步 阻塞 非阻塞的区别,学习Swoole有帮助

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?本文较长需耐心阅读,基础 ...