生成略缩图的问题!!!!

hweiwei56 2004-12-22 03:39:36
下面是我写的生成略缩图的代码,不知道是那块有问题,老是报怎么样的错误



内存不足。
说明: 执行当前 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/"));

}
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hweiwei56 2004-12-23
  • 打赏
  • 举报
回复
问题是,我遍历在单张生成就没问题,但是遍历一下生成就出现问题了,如果单张都可以转,那我想应该不是图片格式的问题吧???
Ivony 2004-12-22
  • 打赏
  • 举报
回复
那么你就要考虑是不是GDI不支持这种格式的图片,或者图片文件已经有部分被损坏。

如果是从System.Drawing.Image.FromFile抛出的OutOfMemoryException,绝大多数是图片格式的问题。。。。
hweiwei56 2004-12-22
  • 打赏
  • 举报
回复
???
文件是存在的,而且肯定是图片,在前面我做了处理,我是打包上传的,先把rar包上传,然后解开,做生成略缩图,在做生成略缩图这一步才出错???
Ivony 2004-12-22
  • 打赏
  • 举报
回复
try
{
img = System.Drawing.Image.FromFile(imagePath + filename);
}
catch ( OutOfMemoryException )
{
throw new InvalidFormatException();
}


System.Drawing.Image.FromFile方法在目标文件不是图片文件或者不存在时,抛出OutOfMemoryException异常。
hweiwei56 2004-12-22
  • 打赏
  • 举报
回复
有个很奇怪的问题,我单张图片生成的话,都没问题,但是我遍历就出现问题了,出现内存不足,我想不通是那的问题,按道理内存不足不太可能,我机器的内存是512的
  • 打赏
  • 举报
回复
你使用的图片扩展名不对,试试如果是.gif的就换成.jpg的,反之依然。

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧