【发布时间】:2015-08-19 14:14:29
【问题描述】:
我想将 tiff 图像作为字节存储在列表中(超过 100 帧)。我正在使用 TiffBitmapDecoder 解码 tiff 文件并将每个帧转换和存储为列表中的字节。它在两者之间抛出 System.OutOfMemoryException,我无法处理! 有没有办法将大图像存储在内存中?谢谢。
ms = New MemoryStream(File.ReadAllBytes(FilePathName))
tiffbmpdecoderViewerImage = New TiffBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default)
For Each frame As BitmapFrame In tiffbmpdecoderViewerImage.Frames
ms = New MemoryStream
BmpEncoder = New BmpBitmapEncoder
BmpEncoder.Frames.Add(frame)
BmpEncoder.Save(ms)
ByteArrayList.Add(ms.ToArray) //exception
Next
【问题讨论】:
-
“超过 100 帧”应该是什么意思? AFAIK,TIFF 文件没有动画......没有“框架”。
-
除了不可能在内存中保存任意大量的位图之外,BMP 肯定不是最紧凑的格式,使用 JPEG 等压缩格式可以节省 10 倍或更多。跨度>
-
一个 Tiff 图像可以包含多页。请参考awaresystems.be/imaging/tiff/faq.html