批量压缩图片
// See https://aka.ms/new-console-template for more information using ReduceImage; Console.WriteLine("Hello, World!"); string folderPath = "C:\\Users\\shiningrise\\Desktop\\fsdownload\\UploadFiles"; // 将此处替换为要遍历的文件夹路径 Bianli(folderPath); void Bianli(string path) { List<string> temp = new List<string>(); temp.Add(path); for (int i = 0; i < temp.Count; i++) { if (File.Exists(temp[i])) { continue; } else { List<string> dirs = new List<string>(Directory.EnumerateDirectories(temp[i])); foreach (var dir in dirs) { temp.Add(dir); } List<string> files = new List<string>(Directory.EnumerateFiles(temp[i])); foreach (string file in files) { temp.Add(file); } } } foreach (string pathTemp in temp) { if (File.Exists(pathTemp)) Img.ReduceImage(pathTemp, 768, 254); Console.WriteLine(pathTemp); } }
using System; using System.Net; using System.IO; using System.Text; using System.Drawing; namespace ReduceImage { /// <summary> /// 下载远程图片保存到本地地址 /// </summary> public class Img { public static void ReduceImage(string imageFile, int toWidth, int toHeight) { try { Image originalImage = Image.FromFile(imageFile); if (toWidth <= 0 && toHeight <= 0) { return; } else if (toWidth > 0 && toHeight > 0) { if (originalImage.Width < toWidth && originalImage.Height < toHeight) return; } else if (toWidth <= 0 && toHeight > 0) { if (originalImage.Height < toHeight) return; toWidth = originalImage.Width * toHeight / originalImage.Height; } else if (toHeight <= 0 && toWidth > 0) { if (originalImage.Width < toWidth) return; toHeight = originalImage.Height * toWidth / originalImage.Width; } Image toBitmap = new Bitmap(toWidth, toHeight); try { using (Graphics g = Graphics.FromImage(toBitmap)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.Clear(Color.Transparent); g.DrawImage(originalImage, new Rectangle(0, 0, toWidth, toHeight), new Rectangle(0, 0, originalImage.Width, originalImage.Height), GraphicsUnit.Pixel); originalImage.Dispose(); toBitmap.Save(imageFile, System.Drawing.Imaging.ImageFormat.Png); toBitmap.Dispose(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (originalImage != null) originalImage.Dispose(); if (toBitmap != null) toBitmap.Dispose(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }