问题描述
使用c#对超过50M的大图片缩小时提示“内存不足”System.IO.FileStreamfs=null;fs=newSystem.IO.FileStream(source,System.IO.FileMode.Open,System.IO.FileAccess.Read);ImagesrcImage=System.Drawing.Image.FromStream(fs);fs.Close();红色的地方开始报错privatevoidPercentImage(System.IO.FileStreamfs){//System.IO.FileStreamfs=null;//fs=newSystem.IO.FileStream(sfile,System.IO.FileMode.Open,System.IO.FileAccess.Read);ImagesrcImage=System.Drawing.Image.FromStream(fs);//fs.Close();//缩小后的高度intnewH=0;//int.Parse(Math.Round(srcImage.Height*percent).ToString());//缩小后的宽度intnewW=0;if(srcImage.Height>srcImage.Width){newH=1000;newW=(1000*srcImage.Width)/srcImage.Height;}else{newW=600;newH=(600*srcImage.Height)/srcImage.Width;}//int.Parse(Math.Round(srcImage.Width*percent).ToString());Bitmapb=null;try{//要保存到的图片b=newBitmap(srcImage,newW,newH);Graphicsg=Graphics.FromImage(b);b.Save("c:\temp\tmp.jpg");}catch(Exceptionex){newDAL().err(AppPath,"查看电子文件--断点下载缩小:",ex.Message);}finally{b.Dispose();srcImage.Dispose();//File.Delete(sfile);}}
解决方案
解决方案二:
在网上看到一个图像处理时内存不足的问题说是可以用分块复制处理,不知道可以用来做缩放不,哪位知道具体怎么操作?
解决方案三:
你要缩小,明显是有损压缩为什么不干脆先转jpg,会容易处理的多50M直接变成<1M