回复 11楼leadcom的帖子
您好,昨天已经和厂商沟通过了,图片大小会占用内存,
我们来计算一下每个图片所占用的内存:
计算公式:Width x Height x Bytes per Pixel = 占用内存大小
每页A4扫描件300dpi大小约为2479 x 3508的宽高,彩色扫描的话是24bit/每像素
2479 x 3508 x 24 bits per pixel / 8 bits per byte = 26,088,996 或者26 MB 每页。
假设PDF中有163页,所以将会占用:26MB X 163 = 4,252,506,348 bytes 也就是4.25 GB.
一个Win32应用程序最大只能使用2^32 bytes 内存也就是4.29 GB.
这个应用程序自己也会占用内存,你可以发现这个程序会占用能够使用的所有内存。
所以当您需要打开一个超过140页的PDF时,32位系统的内存会被全部占用,多于这个页数会导致内存不足。
一次性打开这么多图片放到内存中,快速固然是一方面,但如果您想要打开上百张图片的话,内存会成为瓶颈。
解决方法有两种:一种是将32位程序变为64位,这样可以使用更多的内存。
一种是按需加载,就是当前用户选择文档中的某个页面时只加载这个页面,处理完成后释放并加载其他页面。
当然您说的我也理解,您需要撤销操作,并且保存操作是整个PDF文档的保存,而不是单页保存。但物理内存限制了这样使用。
另外您也提到能否放到本地磁盘来做这件事,是可以的,但由于引入了IO操作所以性能会直线下降。不建议采用。
以上如果您有任何问题,请随时跟帖回复。 |