1: public void SaveResizedImage(string imagePath, int width, int height)
2: {
3: int newResizeimageId;
4: // Читаем графический файл с жесткого диска
5: FileStream fs = File.OpenRead(imagePath);
6: byte[] data = new byte[fs.Length];
7: fs.Read(data, 0, data.Length);
8: MemoryStream ms = new MemoryStream(data);
9: Bitmap bmp = new Bitmap(ms);
10: System.Drawing.Image imgPhoto = (Image)bmp;
11: // Настраиваем Encoder, для преобразования графики
12: Encoder qualityEncoder = Encoder.Quality;
13: EncoderParameters parameterList = new EncoderParameters(1);
14: EncoderParameter qualityParameter = new EncoderParameter(qualityEncoder, 50L);
15: parameterList.Param[0] = qualityParameter;
16: // По расширению файла определяем кодек
17: ImageCodecInfo codec = GetCodecFromExtension(Path.GetExtension(imagePath)); //GetCodecFromExtension в этом листинге не приведена.
18: // Создаем пустую канву. Измененная графика будет записана в эту канву.
19: Bitmap bmPhoto = new Bitmap(width, height);
20: bmPhoto.SetResolution(10, 10);
21: Graphics grPhoto = Graphics.FromImage(bmPhoto);
22: grPhoto.SmoothingMode = SmoothingMode.HighSpeed;
23: grPhoto.InterpolationMode = InterpolationMode.High;
24: grPhoto.PixelOffsetMode = PixelOffsetMode.HighSpeed;
25: grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, width, height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel);
26: // Сохраняем файл в память, а затем убеждаемся, что все ресурсы освобождены корректно.
27: MemoryStream mm = new MemoryStream();
28: bmPhoto.Save(mm, codec, parameterList);
29: imgPhoto.Dispose();
30: bmPhoto.Dispose();
31: grPhoto.Dispose();
32: //Сохраняем массив байт измененной графики куда необходимо.
33: newResizeimageId = SaveImageToDb2(mm.GetBuffer());
34: mm.Dispose();
35: }