我想实现一个简单的从源图片中切出一小块,然后保存成文件的功能,无奈本人太笨,从msdn中抄了一段,结果倒是可以实现,但是效果不好,非常的慢。我的源图是一张50MBytes 12786*10763大小的巴格达航拍图片,我要把它切成400块500*500大小的图,这不已经4个多小时了,还没切完呢……大家帮帮我吧,看着硬盘狂转,我好心疼哦~~ 有没有更好的办法呢?Bitmap tmpBmp = new Bitmap("E:\\baghdad_dwntwn_psh_sept10_2002_dg.jpg");
for (int i = 1; i < 20; i++)
for (int j = 0; j < 20; j++)
{
Rectangle destRect = new Rectangle(i*500, j*500, 500, 500);
Bitmap cloneBitmap = tmpBmp.Clone(destRect, format);
string filename = "img" + i.ToString() + j.ToString() + ".jpg";
cloneBitmap.Save("E:\\" + filename,ImageFormat.Jpeg);
}
for (int i = 1; i < 20; i++)
for (int j = 0; j < 20; j++)
{
Rectangle destRect = new Rectangle(i*500, j*500, 500, 500);
Bitmap cloneBitmap = tmpBmp.Clone(destRect, format);
string filename = "img" + i.ToString() + j.ToString() + ".jpg";
cloneBitmap.Save("E:\\" + filename,ImageFormat.Jpeg);
}
编译没问题,都跑起来了,跑了一晚上,把图切完了,可是这样太慢了,求一高效点的办法,谢啦
然后在 for 里加上 cloneBitmap.Dispose()不然这么快的FOR会狂吃内存
using(Bitmap bitmap = new Bitmap())
{
}让系统自己释放资源。