生成略缩图的问题!!!!
下面是我写的生成略缩图的代码,不知道是那块有问题,老是报怎么样的错误
内存不足。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.OutOfMemoryException: 内存不足。
源错误:
行 168: }
行 169: System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
行 170: return myimg.GetThumbnailImage((int)(myimg.Width*nm),(int)(myimg.Height*nm),myCallback,IntPtr.Zero);
行 171: }
行 172: else
我不知道我下面是那个地方有问题,希望大家帮忙
public System.Drawing.Image GenSimg(System.Drawing.Image myimg,int simgw,int simgh,bool isScaled)
{
if(isScaled)
{
float nm;
if((myimg.Width/myimg.Height)>(simgw/simgh))
{
nm = simgw/myimg.Width;
}
else
{
nm = simgh/myimg.Height;
}
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
return myimg.GetThumbnailImage((int)(myimg.Width*nm),(int)(myimg.Height*nm),myCallback,IntPtr.Zero);
}
else
{
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
return myimg.GetThumbnailImage(simgw,simgh,myCallback,IntPtr.Zero);
}
}
private bool ThumbnailCallback()
{
return false;
}
然后我在下面使用
foreach(FileInfo file in files)
{
System.Drawing.Image myimg;
FileStream filestr = new FileStream(file.FullName.ToString(),System.IO.FileMode.Open);
myimg = System.Drawing.Image.FromStream(filestr);
filestr.Close();
string filename = pic_url + DateTime.Now.ToString("yyMMddhhmmssfff") + "_" + (i++) + file.Name.ToString().Substring(file.Name.ToString().LastIndexOf("."));
string filename_l = pic_url + DateTime.Now.ToString("yyMMddhhmmssfff") + "_" + (i++) + "_l" + file.Name.ToString().Substring(file.Name.ToString().LastIndexOf("."));
string filename_s = pic_url + DateTime.Now.ToString("yyMMddhhmmssfff") + "_" + (i++) + "_s" + file.Name.ToString().Substring(file.Name.ToString().LastIndexOf("."));
//GenSimg(myimg,150,112,true).Save(filename_s);
GenSimg(myimg,150,112,true).Save(MapPath("/Album/temp/ko/"));
}