http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=129365&extra=page%3D4
下面才是關鍵的:
我的程式是在控制台運作的,我先建立了一個類:
- 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);
- }
複制代碼 程式比較簡單,還望能夠幫到有用之人……