1

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

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

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

4

1 回答 1

1

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

请参阅将 CGImageRef 保存到 png 文件?保存CGImageRef为 PNG 文件。

于 2012-04-19T15:17:58.843 回答