如何在非UI线程上将PDF页面的图像预览存储到磁盘?

时间:2012-04-19 14:43:16

标签: ios cocoa-touch pdf xamarin.ios core-graphics

我正在尝试创建PDF页面的缩略图预览,并将它们作为PNG存储在磁盘上。这应该在一个单独的线程中运行,而不是在UI线程上运行。

要实现这一点,我正在使用CGContextRef绘制PDF页面,然后从中获取CGImage,将其转换为UIImage,从中获取PNG(这将是是NSData)并将NSData保存到磁盘。到目前为止一切都清楚了。

然而,CGImageUIImage是一个UI元素,不应该在另一个线程上使用 - 但我不想将该图像带到屏幕上。在这种情况下,可以在另一个线程上使用它们吗?或者是否有另一种方法可以直接将PDF页面预览呈现给磁盘?

1 个答案:

答案 0 :(得分:1)

UIKit 通常不是线程安全的(某些调用是,但它的记录非常糟糕)。 OTOH CoreGraphics是线程安全的。因此,避免UIImage并仅使用CGImage是在后台线程中进行图像处理的最安全方法。

请参阅Saving CGImageRef to a png file?CGImageRef保存为PNG文件。