采用多线程,整体效果

图像根目录黏贴或者手工选择,点击开始,进行目录底下图片筛查。采用多线程,点击开始按钮,开启线程,这样UI不会卡住

private void button2_Click(object sender, EventArgs e)
{
var foldPath = textBox1.Text.Trim();
if (string.IsNullOrEmpty(foldPath))
{
return;
}
ImageZoomThread(foldPath);
}

  

线程方法:

private void ImageZoomThread(string foldPath){ThreadStart threadStart = delegate { listBox1.Items.Clear(); ZoomImage(foldPath); };Thread thread = new Thread(threadStart);thread.IsBackground = true;thread.Start();}

  

缩放图像,核心代码:

 private void ZoomImage(string foldPath){DirectoryInfo dir = new DirectoryInfo(foldPath);FileInfo[] files = dir.GetFiles("*.jpg");DirectoryInfo[] dii = dir.GetDirectories();  foreach (var file in files){listBox1.Items.Add(file.FullName);listBox1.SelectedIndex = -1;ChangeImageSize(file.FullName, file.FullName.Replace(".jpg", "_zoom.jpg"));}//获取子文件夹内的文件列表,递归遍历  foreach (DirectoryInfo d in dii){ZoomImage(d.FullName);}  }/// <summary>/// 压缩图片/// </summary>/// <param name="filePath">要压缩的图片的路径</param>/// <param name="newfilePath">压缩后的图片的路径</param>public void ChangeImageSize(string filePath, string newfilePath){Bitmap bmp = null;ImageCodecInfo ici = null;System.Drawing.Imaging.Encoder ecd = null;EncoderParameter ept = null;EncoderParameters eptS = null;try{ici = this.getImageCoderInfo("image/jpeg");ecd = System.Drawing.Imaging.Encoder.Quality;eptS = new EncoderParameters(1);ept = new EncoderParameter(ecd, 35L);eptS.Param[0] = ept;if (File.Exists(newfilePath)){File.Delete(newfilePath);}bmp = new Bitmap(filePath);bmp.Save(newfilePath, ici, eptS);if (bmp != null)bmp.Dispose();ept.Dispose();eptS.Dispose();}catch (Exception ex){//throw new Exception(ex.Message);}finally{}}/// <summary>/// 获取图片编码类型信息/// </summary>/// <param name="coderType">编码类型</param>/// <returns>ImageCodecInfo</returns>private ImageCodecInfo getImageCoderInfo(string coderType){ImageCodecInfo[] iciS = ImageCodecInfo.GetImageEncoders();ImageCodecInfo retIci = null;foreach (ImageCodecInfo ici in iciS){if (ici.MimeType.Equals(coderType))retIci = ici;}return retIci;}

  

转载于:https://www.cnblogs.com/y114113/p/7641706.html

c#目录以及子目录下图片批量缩放,像素不变,图像大小改变相关推荐

  1. Mac下 图片批量缩放命令-sips

    转自:http://my.oschina.net/ioslighter/blog/382436 如有侵犯,请来信oiken@qq.com 原文标题: Images.xcassets真是太好用了 再也不 ...

  2. shell 批量压缩指定目录及子目录内图片

    DevStore小编专栏 shell 批量压缩指定目录及子目录内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此需要编写一个程序,查找目录及子目录的图片文件(jpg,gif,png),将大 ...

  3. linux c 读取目录及其子目录下所有.jpg文件的文件名(无后缀)

    此程序用来生成<yolo v2中VOC数据生成labels所需的图片文件名文档>train.txt linux c 读取目录及其子目录下所有.jpg文件的文件名:   http://www ...

  4. 打印 指定目录下和子目录下的的所有.java文件的路径. (使用FileFilter过滤器)

    1 package test; 2 /* 3 * 打印 指定目录下和子目录下的的所有.java文件的路径. 4 * */ 5 import java.io.*; 6 import java.util. ...

  5. php 遍历目录下的子目录文件,PHP获取目录及子目录下指定后缀的所有文件

    想要获取某个目录下指定后缀的所有文件(包含子目录中的文件),这是一个很常见的小需求,使用PHP应该怎么实现呢? 代码 class Dir { /** * 获取文件夹内指定后缀的所有文件 * @para ...

  6. php 获取所有子目录名,php读取目录及子目录下所有文件名的方法,_PHP教程

    php读取目录及子目录下所有文件名的方法, 本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考.具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的 ...

  7. php读取目录及子目录下所有文件名的方法

    本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考.具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下: $dir= ...

  8. Python 读取指定目录及其子目录下所有文件名

    Python 读取指定目录及其子目录下所有文件名 本文博客地址:https://xinancsd.github.io/Python/python_search_folder.html 目标 磁盘中的文 ...

  9. Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录

    内容概要 〇.背景 一.需求描述 二.解决方案 三.Makefile编写 3.1 根目录下的Makefile编写 3.2 myMath和myRecord目录下的Makefile编写 3.3 myStr ...

最新文章

  1. 【双非学历】历时1个月,18家公司,37轮面试,5个offer
  2. 计算机操作系统作业答案,计算机操作系统作业及答案
  3. C++11学习笔记-----线程库std::thread
  4. Android -- 短信
  5. asterisk配置会议室meetme.conf
  6. 2019 最全支付宝高级Java现场面试37题
  7. java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作
  8. web前端到底是什么?有前途吗
  9. 简单报价单模板_圣诞节祝福邮件必这样写【附件参考模板BY埃马】
  10. 想开发微信小游戏,先看看腾讯是如何制定规则的
  11. Android Dialog Activity
  12. svn利用钩子脚本功能实现代码同步到web目录
  13. java -cp 什么意思 怎么用
  14. 计算机关闭节能模式,bios怎么关闭cpu节能模式_bios节能模式怎么设置
  15. Multisim14安装教程(下载链接在文末)
  16. 联想服务器修改ip地址,联想 lenove 3750 M4服务器更改启动项和管理口IP
  17. linux安装7z命令,Linux 下安装 7zip 及使用
  18. mysql汽车租赁管理系统
  19. es中的keyword相关功能
  20. Mac安装双系统后无法切回mac系统

热门文章

  1. UI设计为什么要使用Figma?
  2. 如何成为一名Web前端开发人员?入行学习完整指南
  3. 前端到底是自学好还是培训好?
  4. 【C语言】牛客网编程初学者入门训练-BC88-BC98
  5. IntelliJ IDEA中怎么创建xml文件?
  6. c语言单词的一个字母变换,c语言:输入一行英文字符串,把每个单词第一个字母变为大写,输出修改后的字符串知道...
  7. python flask api 统计_python之restful api(flask)获取数据
  8. vsftp客户端_vsftp 如何登陆?
  9. python image.open函数_PIL.Image.open和cv2.imread的比较与相互转换的方法
  10. php主页显示商品预览图代码,在ECSHOP留言板页面显示商品缩略图方法