C#图片处理之:图片缩放和剪裁
应听众点播要求,今天说说用C#做图片的缩放和剪裁,相信很多人会对这部分内容感兴趣,毕竟这个操作太实用了。
其实在GDI+中,缩放和剪裁可以看作同一个操作,无非就是原始区域的选择不同罢了。空口无凭,先看具体算法可能更好理解。
/// <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 KiResizeImage(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 KiCut(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; } }
注意到区别了吗?提示,g.DrawImage中第二个new Rectangle。
目标其实都是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#实现缩放和剪裁图片的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...
- PHP图片裁剪_图片缩放_PHP生成缩略图
2019独角兽企业重金招聘Python工程师标准>>> 在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多, ...
- 关于图片按比例自适应缩放
今天在看视觉规范的时候,大高走过来说 帮他们那边看一个问题.又是一个关于自适应的问题.不过,我喜欢.瞄了一下,需求是这样的:用户上传照片,照片的尺寸未知:需要生成一个预览,这个预览图 要根据提供给用户 ...
- ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]
用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util; im ...
- PHP实现图片的等比缩放和Logo水印功能示例
文章来自于:脚本之家 文章链接:https://www.jb51.net/article/112909.htm 这篇文章主要介绍了PHP实现图片的等比缩放和Logo水印功能,结合实例形式分析了php图 ...
- android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能
Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...
- C#开发自动照片(图片)裁剪(缩放)工具
1.需求分析 用winform窗体程序,开发一个能够自动.批量对图片进行缩放和裁剪的程序. 原本想直接从网上找类型的工具直接用,但是无奈现在网上能找到的工具,要么不能用,要么就是很 恶心的下载完后还有 ...
- layer.photos 查看本地图片,并实现缩放和旋转功能
公司用了layui这个框架,需要用到展示图片这个功能,千辛万苦终于实现啦!!!记录一下 后端: 1.controller(我这边是直接从前端传递来图片地址) @Log(title = "查看 ...
- Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片
Python OpenCV:利用滚动条移动图片,利用鼠标缩放图片 一.实现目标 二.实现背景 三.实现方法 四.运行环境 五.运行代码 六.运行结果 七.不足 八.参考 一.实现目标 在OpenC ...
最新文章
- CDCN 活体检测笔记
- 不要再次进行阅读的计算机论文与理由(持续更新中)
- 每天学点Linux命令:倒叙打印文件第二行的前100个大写字母
- Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析
- 计算文档中不同单词出现的次数
- Vue-CLI and Leaflet (9): 点聚合 Leaflet.markercluster
- 【Leetcode】Remove Duplicates from Sorted Array II
- MS SQL中查看text,ntext,image类型数据
- curl 命令-接口测试
- 【洛谷P1774】最接近神的人_NOI导刊2010提高(02)(模版题---求逆序对数目+离散化---树状数组/权值线段树)
- CAN FD实战之CAN FD应用领域及CAN迁移至CAN FD的策略
- 华为交换机命令 端口速率_华为交换机看端口速率
- Android Studio Design界面不显示控件的解决方法
- C# 串口通讯 串口调试助手源码
- python中test是什么意思_Python unittest 之一: 什么是单元测试
- 从零开始搭建自己的云服务器
- VerilogHDL二分频代码
- winform ui 设计参考
- spss 自动线性建模
- Unity虚拟相机Cinemachine教程
热门文章
- 案例-分页按钮(CSS3)
- mysql之解决“mysql server has gone away“的问题
- python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...
- 前后端交互总结2:使用PHP进行表单数据上传与更新
- Kotlin系列之枚举类
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
- Spring系列(一):Spring的基本概念及其核心
- Maxwell数据库数据采集-大数据week12-DAY1-Maxwell
- cas导入Eclipse中
- Linux命令解释之rpm