修改图片大小和质量 C#
2013-06-27 14:46
323 查看
转自:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=129365&extra=page%3D4
有时候我们在做一些事情的时候会用到处理很多张图片,处理的内容就是修改成同样大小的,当图片少的时候很简单,但是当图片很多,成百上千的时候就手都处理比较慢,如此就会想到批处理,于是乎就有了下面这些代码: 首先,看看实现的效果吧: 只是为了演示效果,随便找了张照片,总共87张照片 这是程序运行时的效果: 处理完成后的效果,将所有的图片定义成了同样大小的了: 这是完成后图片的属性: 下面才是关键的: 我的程序是在控制台运行的,我先新建了一个类: using System; using System.IO; using System.Collections; using System.Drawing;//not in this using System.Drawing.Drawing2D; using System.Drawing.Imaging;//in this ImageFormat.Jpeg namespace ResizePhoto { public class ResizePic { /// <summary> /// 修改图片大小 /// </summary> /// <param name="szdir"></param> /// <param name="width"></param> /// <param name="height"></param> public void resize_pic(string szdir, int width, int height) { int i = 0; Image img = null; Image bmcpy = null; Graphics gh = null; string szsavedir = Directory.CreateDirectory(szdir + "\\resized").FullName.ToString(); string[] szfiles = Directory.GetFiles(szdir, "*.jpg"); foreach (string szfile in szfiles) { img = Image.FromFile(szfile); bmcpy = new Bitmap(width, height); gh = Graphics.FromImage(bmcpy); gh.DrawImage(img, new Rectangle(0, 0, width, height)); bmcpy.Save(szsavedir + "\\" + i.ToString() + ".jpg", ImageFormat.Jpeg); i++; Console.WriteLine("第" + i.ToString() + "照片已经处理完毕,总共" + szfiles.Length + "张图片"); } gh.Dispose(); bmcpy.Dispose(); img.Dispose(); Console.WriteLine("{0}张图片已经处理完毕", i); Console.ReadKey(true); } /// <summary> /// 改变图片质量 /// </summary> /// <param name="szdir"></param> /// <param name="lqulity"></param> public void rebdqulity_pic(string szdir, long lqulity) { int i = 0; Bitmap myBitmap; ImageCodecInfo myImageCodecInfo; Encoder myEncoder; EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; // Get an ImageCodecInfo object that represents the JPEG codec. myImageCodecInfo = GetEncoderInfo("image/jpeg"); myEncoder = Encoder.Quality; myEncoderParameters = new EncoderParameters(1); myEncoderParameter = new EncoderParameter(myEncoder, lqulity); myEncoderParameters.Param[0] = myEncoderParameter; string szsavedir = Directory.CreateDirectory(szdir + "\\quality").FullName.ToString(); string[] szfiles = Directory.GetFiles(szdir, "*.jpg"); foreach (string szfile in szfiles) { myBitmap = new Bitmap(szfile); myBitmap.Save(szsavedir + @"\quli" + i.ToString() + ".jpg", myImageCodecInfo, myEncoderParameters); i++; } } private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; encoders = ImageCodecInfo.GetImageEncoders(); for (j = 0; j < encoders.Length; ++j) { if (encoders[j].MimeType == mimeType) return encoders[j]; } return null; } } } 复制代码 接着在控制台程序调用这个类: static void Main(string[] args) { ResizePic resizepic = new ResizePic(); string strDir = @"test"; int width = 390; int height = 567; long quality = 500; resizepic.resize_pic(strDir,width,height); resizepic.rebdqulity_pic(strDir, quality); } 复制代码 程序比较简单,还望能够帮到有用之人…… ResizePhoto.zip (68.18 KB) 这是程序源码,有需要的清下…… |
相关文章推荐
- 上传图片并修改其大小(C#)
- 修改图片大小和质量
- 上传图片并修改其大小(C#)
- C#代码修改图片分辨率大小
- 上传图片并修改其大小(C#) (转帖)
- 上传图片并修改其大小(C#)
- 上传图片并修改其大小(C#)
- C# 修改图片文件分辨率大小
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- C#更改gif图片大小后仍然保持动画效果
- IOS中修改图片的大小:修改分辨率和裁剪
- C#比较两张图片的大小(转载:学习用)
- c# winform下图片二进制存储-改变大小-显示
- 如何修改magento前台显示的产品图片的大小尺寸
- iOS 修改网络图片的大小 宽和高
- Android修改图片的大小
- c# GDI+改变图片保存时的质量
- 关于libjpeg修改图片质量的讨论
- 将bitmap修改为灰阶,减小图片大小
- photoshop菜鸟实用入门(1)----图片大小修改