class Program{static double size = 2.443438914027149;static void Main(string[] args){if (!System.IO.Directory.Exists("Img")){System.IO.Directory.CreateDirectory("Img");Console.WriteLine("已创建Img目录,请把需要处理的图片放到该目录下");Console.ReadKey(true);return;}if (!System.IO.Directory.Exists("NewImg")){System.IO.Directory.CreateDirectory("NewImg");}GetPath("Img");Console.ReadKey(true);}//读取文件夹中所有文件static public void GetPath(string dir) {foreach (string d in Directory.GetFileSystemEntries(dir)) {if (File.Exists(d)) {FileInfo fi = new FileInfo(d);if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1) {fi.Attributes = FileAttributes.Normal;}ChangeImageSize(dir);break;}else {DirectoryInfo d1 = new DirectoryInfo(d);GetPath(dir +"/" +d1.Name);}}}static public void ChangeImageSize(string dir) {string[] fileStrs = System.IO.Directory.GetFiles(dir);foreach (string s in fileStrs) {System.IO.FileInfo info = new System.IO.FileInfo(s);if (info.Extension == ".png" || info.Extension == ".jpg") {Image img = GetFile(s);Bitmap bit = GetNewSizeBitmap(img, size);SaveImage(bit, info.Name, info.Extension,dir);}}}static public Image GetFile(string path){FileStream stream = File.OpenRead(path);int fileLength = 0;fileLength = (int)stream.Length;Byte[] image = new Byte[fileLength];stream.Read(image, 0, fileLength);System.Drawing.Image result = System.Drawing.Image.FromStream(stream);stream.Close();return result;}static public Bitmap GetNewSizeBitmap(Image img , double size){int newWidth = Convert.ToInt32(img.Width / size);int newHeight = Convert.ToInt32(img.Height / size);Size s = new Size(newWidth, newHeight);Bitmap newBit = new Bitmap(img, s);return newBit;}static public void SaveImage(Bitmap bit, string name, string ext, string dir){if (!System.IO.Directory.Exists("NewImg\\" + dir)) {System.IO.Directory.CreateDirectory("NewImg\\" + dir);}bit.Save(@"NewImg\\" + dir + "\\" + name);bit.Dispose();Console.WriteLine("已处理:" + name);}}
原文:http://www.cnblogs.com/xiejunzhao/p/6517160.html