前言:经常会遇到需要处理图片大小显示在界面上的情况,这里整理一下两种缩放图片的方法。

1.自己写一个缩放的方法(using System.Drawing)

        public Bitmap shrinkTo(Image pic, System.Drawing.Size S, Boolean cutting){Bitmap tmp = new Bitmap(S.Width, S.Height);Graphics g = Graphics.FromImage(tmp);g.Clear(Color.FromArgb(0, 0, 0, 0));Boolean mode = (float)pic.Width / S.Width > (float)pic.Height / S.Height; if (cutting){mode = !mode;}if (mode){S.Height = (int)((float)pic.Height * S.Width / pic.Width);}else{S.Width = (int)((float)pic.Width * S.Height / pic.Height);}System.Drawing.Point P = new System.Drawing.Point((tmp.Width - S.Width) / 2, (tmp.Height - S.Height) / 2);g.DrawImage(pic, new Rectangle(P, S));return tmp;}

2.利用OpenCvSharp实现图片缩放(using OpenCvSharp)

方法实现部分:

        public Mat ShrinkTo(Mat mat , OpenCvSharp.Size size){if (mat.Empty()){return null;}Mat outMat = new Mat();Cv2.Resize(mat,outMat,size);return outMat;}

根据imagebox的Size把加载的图片显示出来

TIP:注意这里用到了OpenCvSharp.Extensions,需要在Nuget中添加拓展并引用。

当然这里可以简化这个语句,或者上面的方法直接输出Bitmap类型,但是由于最近在学习opencvsharp,所以更多去使用和熟悉Mat类

        public string SelectPic(){OpenFileDialog dialog = new OpenFileDialog();dialog.Multiselect = false;dialog.Title = "请选择图片";dialog.Filter = "图片文件(*.jpg,*.png,*.bmp)|*.jpg;*.png;*.bmp";if (dialog.ShowDialog() == DialogResult.OK){pictureBoxSrc.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(ShrinkTo(new Mat(dialog.FileName,ImreadModes.AnyColor|ImreadModes.AnyDepth),new OpenCvSharp.Size(pictureBoxSrc.Width,pictureBoxSrc.Height)));return dialog.FileName;}return null;}

总结:可以看到,利用opencvsharp的Resize方法可以更加省时省力地缩放图片,不用去当那个造船的人,当然要提升自己的算法能力就可以去自己写。

OpenCvSharp工作学习笔记5-图片缩放相关推荐

  1. MUI学习笔记之图片上传和预览

    MUI学习笔记之图片上传和预览 源代码是从博客园下载 我一边学习,一边注释,力求理解 <head> <meta charset="UTF-8"> <m ...

  2. Java学习笔记(图片)

    --------android培训.java培训.期待与您交流! ---------- Java学习笔记(图片) thanking in 老毕 --------android培训.java培训.期待与 ...

  3. Matlab 图像处理入门学习笔记—1.图片格式转换

    前言:作为一个编程思维极弱的小白,就算是matlab的学习也稍有困难.但也想学好自己选择的路.从最简单的开始,记录学习,也算监督自己. 今天的笔记是图片格式转换,废话不说,直接上代码: a=512; ...

  4. 数字图像处理笔记二 - 图片缩放(最近邻插值(Nearest Neighbor interpolation))

    图片缩放的两种常见算法: 最近邻域内插法(Nearest Neighbor interpolation) 双向性内插法(bilinear interpolation) 本文主要讲述最近邻插值(Near ...

  5. openCV学习笔记1——图片的读取,显示,保存;视频的读取,显示和保存

    在pycharm中下载openCV ①打开pycharm下方的terminal终端 ②在路径下直接输入 pip install opencv-python 1.读入图像 函数:cv2.imread() ...

  6. USB工作学习笔记(一)

    USB基础知识扫盲 前言 本文将从USB的插入检测.身份识别.数据传输三个方面对USB通讯整个过程扫盲,其中有些知识点的详细信息会放在文章最下面的附录中供查看,从而保证文章的整体简洁.在进入主题之前, ...

  7. css --- [学习笔记]背景图片小结 css三大特性

    源代码 参考 1. 行高(line-height) 目标 理解 - 能说出行高和高度三种关系 - 能简单理解为什么行高等于单行文字会垂直居 应用 使用行高实现单行文字垂直居中 能会测量行高 2. CS ...

  8. cocos2d-x学习笔记之图片分辨率适配

    从wiki里面看到,新的版本是去掉了enabelRetinaDisplay,因为要兼容ios+android,其他平台是否也是如此,未知- 测试代码 std::vector<std::strin ...

  9. Anker—工作学习笔记

    http://www.cnblogs.com/Anker/archive/2013/08/17/3263780.html 1.基本知识 epoll是在2.6内核中提出的,是之前的select和poll ...

  10. Qt学习笔记-web图片爬取器(webKit)Qt5.6以下的版本才有

    在上实例和源码前,说下有个东西: css探测器: 如下图: 拷贝的代码如下: body > div.wrap > div:nth-child(5) > div:nth-child(1 ...

最新文章

  1. eip协议通信_3月免费公开课伺服、通信等课程重磅发布,火热报名中
  2. Bicolor的使用
  3. Win 10 安装detectron2 详细手册
  4. 安徽工业大学工商学院计算机,发个帖子(对计算机学弟学妹们的建议)
  5. 03:Poor Herobrine 直接插入排序
  6. java中关于IO流的知识总结(重点介绍文件流的使用)
  7. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)
  8. weblogic在处理jsp tag的scope属性时的BUG???
  9. 敏捷开发系列学习总结(2)——Bug修改流程
  10. GAEA Winsieve v1.2 1CD(快速输入和打印结晶粒度分析曲线)
  11. 年会抽奖程序,及时安排一波【开源项目】
  12. 计算机自检报错无法开机,BIOS维修网站www.biosrepair.com-开机自检BIOS错误代码解析...
  13. PyQt5 基本语法(一):基类控件
  14. 通达信波段王指标公式主图_通达信波段操盘主图指标公式
  15. 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
  16. 骨传导耳机伤害耳朵吗?长期使用骨传导耳机有什么危害
  17. 《Windows 8 权威指南》——2.7 降低功耗,延长续航时间才是王道
  18. 【Ubuntu系列】Ubuntu20.04系统下3060显卡驱动安装记录
  19. word 多级标题的编辑
  20. java按比例压缩图片到指定的大小(kb、mb)

热门文章

  1. OpenStack 快速进阶教程
  2. 前端JavaScript学习网站(重磅推荐)
  3. 【verilog】b站-[Verilog HDL] Installing and Testing Icarus Verilog + GTKWave 笔记
  4. idv和vdi的优劣势_桌面虚拟化中VDI与IDV的区别?
  5. ArcGIS重装之旧软件卸不干净的问题
  6. linux单网卡多拨Adsl,ADSL多拨
  7. android编译环境-软硬件要求
  8. failover.mysql_物理standby的Failover
  9. Oracle RAC Failover 说明
  10. 超人能一拳把某个人打出地球吗?