if (pictureBox1.Image == null) return;
                Bitmap srcmap = null, destbit =null;
                Graphics g = null;
                try
                {
                    //例如:图片目标大小为:320*240

                    GC.Collect();GC.WaitForPendingFinalizers();
                    srcmap = new Bitmap(pictureBox1.Image);
                    //Bitmap srcmap = new Bitmap(strImageFile);
                    //图片文件=strImageFile,直接NEW出某图片文件时,如图片太太会出现OutOfMemory的异常哦,不知如何解决@@
                    destbit = new Bitmap(320, 240);
                    Rectangle srcRec = new Rectangle(0, 0, srcmap.Width, srcmap.Width);
                    Rectangle destRec = new Rectangle(0, 0,  320,240);
                    g = Graphics.FromImage(destbit);
                    g.DrawImage(srcmap, destRec, srcRec, GraphicsUnit.Pixel);
                    destbit.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);//保存较大Jpeg,如1280*1024图片时,比较消耗内在哦。
                    if (g != null) { g.Dispose(); g = null; }
                    if (destbit != null) { destbit.Dispose(); destbit = null; }
                    if (srcmap != null) { srcmap.Dispose(); srcmap = null; }
                    GC.Collect();GC.WaitForPendingFinalizers();

                }
                catch (Exception ex)
                {
                    if (g != null) { g.Dispose(); g = null; }
                    if (destbit != null) { destbit.Dispose(); destbit = null; }
                    if (srcmap != null) { srcmap.Dispose(); srcmap = null; }
                    GC.Collect();GC.WaitForPendingFinalizers();
                   

                    MessageBox.Show(ex.Message);
                }

                //如果大家有更好的方法,请多多指教,TKS!

                参考源:http://www.vbforums.com/showthread.php?t=560892

posted on 2009-04-14 14:40  Emosen  阅读(1951)  评论(1编辑  收藏  举报