【发布时间】:2011-11-01 12:05:14
【问题描述】:
我有一个处理图像编辑(裁剪和调整大小)的 Windows 应用程序项目。不幸的是,这些图像处理消耗了大量的内存和 CPU 资源(很容易达到 600MB 或 50% cpu),而且只需要裁剪和调整一张 2.5MB (2300*5400px) 的 gif 图像。不仅如此,由于资源消耗大,程序在调整大小时卡住了......
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
【问题讨论】: