我正在尝试创建PDF页面的缩略图预览,并将它们作为PNG存储在磁盘上。这应该在一个单独的线程中运行,而不是在UI线程上运行。
要实现这一点,我正在使用CGContextRef
绘制PDF页面,然后从中获取CGImage
,将其转换为UIImage
,从中获取PNG(这将是是NSData
)并将NSData
保存到磁盘。到目前为止一切都清楚了。
然而,CGImage
和UIImage
是一个UI元素,不应该在另一个线程上使用 - 但我不想将该图像带到屏幕上。在这种情况下,可以在另一个线程上使用它们吗?或者是否有另一种方法可以直接将PDF页面预览呈现给磁盘?
答案 0 :(得分:1)
UIKit 通常不是线程安全的(某些调用是,但它的记录非常糟糕)。 OTOH CoreGraphics是线程安全的。因此,避免UIImage
并仅使用CGImage
是在后台线程中进行图像处理的最安全方法。
请参阅Saving CGImageRef to a png file?将CGImageRef
保存为PNG文件。