У меня есть проект приложения Windows, который занимается редактированием изображений (кадрирование и изменение размера). К сожалению, эти обработки изображений потребляют много ресурсов памяти и ЦП (легко достигают 600 МБ или 50% ЦП), и все дело в обрезке и изменении размера только одного изображения GIF, которое весит 2,5 МБ (2300 * 5400 пикселей) Более того, из-за большого потребления ресурсов программа зависает при изменении размера ...
public static Image Resize(Image imgToResize, Size size)
{
Bitmap b = new Bitmap(size.Width, size.Height);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.Default;
g.SmoothingMode = SmoothingMode.HighSpeed;
g.PixelOffsetMode = PixelOffsetMode.Default;
g.DrawImage(imgToResize, 0, 0, size.Width, size.Height);
g.Dispose();
return (Image)b;
}
public static Image Crop(Image img, Point p1, Point p2)
{
Rectangle cropArea = new Rectangle(p1.X, p1.Y, p2.X - p1.X, p2.Y - p1.Y);
return (img as Bitmap).Clone(cropArea, img.PixelFormat);
}
Какие методы я должен использовать, чтобы избежать этого?
Я уже пытался сжать его в поток памяти в нескольких форматах, но это не помогло (даже ухудшило его)
ПРИМЕЧАНИЕ. Я использую стандартные библиотеки рисования .NET: System.Drawing, System.Drawing.Imaging