2011-06-16 138 views
1

在处理大图像(大小约为48 MB,TIFF文件有175页时)时,我正面临一个奇怪的问题。现在,当我试图将Imagefile转换为位图并执行一些操作时,随机系统会抛出“内存异常异常”在.NET中使用图像时出现内存不足异常(VB.Net 2008)

下面是我的代码片段。我在线上获取错误(随机)“pages =新位图(lorigionalFile)”,其中LoriginalFile是ImageType,Page是Bitmap。

因此,请指导我如何消除此类错误或停止内存泄漏。


 Dim lorigionalFile As System.Drawing.Image 
     Dim SaveEncodeParam As EncoderParameter 'Encoder parameter to create multi page image 
     Dim EncoderParams As EncoderParameters = New EncoderParameters(1) 'Encoder parameter Array 
     Dim pages As Bitmap 'Used to save image page 
     Dim NextPage As Bitmap 'Used to save next image page 
     Dim PageNumber As Integer 
     Lfr = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite) 

     lorigionalFile = System.Drawing.Image.FromStream(Lfr) 

     ''Get number of page count in image 
     PageNumber = getPageNumber(lorigionalFile) 

     'set first page as active frame 
     cintPagenumber = PageNumber 

     'loop to every page of attached document 
     For i As Integer = 0 To PageNumber - 1 
      'set active from as per loop variable 
      lorigionalFile.SelectActiveFrame(FrameDimension.Page, i) 

      'Will get errow in below line(randomly), when there are other programs running in background 
      pages = New Bitmap(lorigionalFile) 

       'image store in Image 
       CalImageContainer.Add(pages) 
       'make a copy on image container 
       CalImageContainerCopy.Add(pages) 

     Next 
     Lfr.Close() 

    End Try 

感谢

PRATIK vohera

回答

0

我不知道VB,但它看起来就像你在创建一个新的位图存储您的for循环上述两者之间没有释放内存。

改为使用Imagemagick从tif中提取图像,然后对每个图像进行操作。

只是一个想法。