我有一个PDF渲染到一个非常高的分辨率的图像(比如高达甚至超过10万* 80000像素)。方法来呈现一个PDF到一个非常高的分辨率NSImage中的位图文件
我设法做到这一点,没有走出内存通过将渲染分成几个切片,然后使用NSOperationQueue渲染每一个,基本上使用drawInRect绘制NSImage pdf表示到一个新的NSImage:fromRect:operation:fraction:然后将TIFFRepresentation保存到文件中。
所有这些都是好的和多核和快速,我几乎高兴。 无论如何,我需要在渲染它们之后再次加入这些切片,以获得单个TIFF文件。
我会尝试合并文件使用NSInputStream和NSOutputStream,但由于每个文件是一个完整的TIFF表示,合并原始字节将导致一个不可读的图片文件。 有没有办法将图像文件合并到一起,而不需要将它们完全加载到内存中,即不使用NSImage方法?
否则,我可以保存原始像素字节而不是tiff表示,然后将它们与NSInputStream/NSOutputStream结合起来,但是如何将整个字节文件转换为可识别的TIFF,而无需再将巨大的内容加载到内存中?
我很好奇,为什么你需要一个像如此之大 - 什么样的PDF的可能有那么多信息?另一种选择是使用我在下面概述的技术提取比想要的分辨率(100MB - 1GB未压缩)低的图像,然后使用一些照片编辑应用程序将其缩放到较大的尺寸。这可能会给你几乎相同的图像。我很想听听你的申请是什么! – 2010-11-24 02:26:04
该应用程序是关于将矢量图形栅格化为非常大的位图以创建高分辨率壁纸大小的打印件。印刷厂需要tiff图像,并且无法直接处理矢量图形。它必须在编码中完成,而不是手动使用Cocoa API。 – 2010-11-24 09:47:20