C# 剪切图和缩小
public void CutToF(Stream stream) { Image initImage = Image.FromStream(stream, true); if (initImage.Width <= 480 && initImage.Height <= 480) { initImage.Save("D://test.jpg", ImageFormat.Jpeg); } else { int initWidth = initImage.Width; int initHeight = initImage.Height; if (initWidth != initHeight) { Image pickedImage = null; Graphics pickedG = null; if (initWidth > initHeight) { pickedImage = new Bitmap(initHeight, initHeight); pickedG = Graphics.FromImage(pickedImage); pickedG.InterpolationMode = InterpolationMode.HighQualityBicubic; pickedG.SmoothingMode = SmoothingMode.HighQuality; Rectangle fromR = new Rectangle(0, 0, initHeight, initHeight);//(initWidth - initHeight) / 2 Rectangle toR = new Rectangle(0, 0, initHeight, initHeight); pickedG.DrawImage(initImage, fromR); pickedImage.Save("D://jpg//test2.jpg"); initWidth = initHeight; } initImage = (Image)pickedImage.Clone(); pickedG.Dispose(); pickedImage.Dispose(); initImage.Save("D://jpg//test1.jpg"); } Image resultImage = new Bitmap(150, 150); Graphics resultG = Graphics.FromImage(resultImage); resultG.InterpolationMode = InterpolationMode.HighQualityBicubic; resultG.SmoothingMode = SmoothingMode.HighQuality; resultG.Clear(Color.White); resultG.DrawImage(initImage, new Rectangle(0, 0, 100, 100), new Rectangle(0, 0, initWidth, initHeight), GraphicsUnit.Pixel); ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici = null; foreach (ImageCodecInfo item in icis) { if (item.MimeType == "image/jpeg" || item.MimeType == "image/bmp" || item.MimeType == "image/png" || item.MimeType =="image/gif") { ici = item; } } EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters(1); ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)100); resultImage.Save("D://jpg//test.jpg", ici, ep); ep.Dispose(); resultG.Dispose(); resultImage.Dispose(); initImage.Dispose(); } }
wangliuzheng1990@126.com