我正在嘗試創建一個工具,以便在 macOS 上對存盤在 PDF 檔案中的矢量影像進行光柵化處理,但所生成的影像在某些形狀的邊緣處含有偽影。另一方面,Preview.app 總是能夠完美地呈現 PDF,如本例所示:
我試過:
- 加載PDF檔案
- 使用PDFKit加載PDF檔案,并使用
draw(with:to:)和thumbnail(of:for:)渲染頁面。
- 將PDF檔案加載到一個
NSImage(它創建了一個NSPDFImageRep),并使用cgImage(forProposedRect:context:hints)
在這兩種情況下,我都得到了這些類似于別名的工件,就像在上面的圖片左側看到的那樣。該 PDF 檔案不在我的控制范圍內,所以無法修改它可能存在的任何問題。出于性能方面的考慮,我目前正試圖從 Cairo(可正確渲染)遷移到蘋果的 PDF 渲染(PDFKit 渲染速度更快,盡管存在這些偽影)。
我是否遺漏了任何可以解決輸出問題的東西?
uj5u.com熱心網友回復:
所以看起來這個問題是由于我在多個執行緒上柵格化PDF造成的(特別是我的工具以多個解析度柵格化PDF,所以我想為什么不同時進行)。
在主執行緒上依次執行操作反而解決了這個問題。我想我已經想出了一種方法,通過手動初始化 CGContext 來并發使用它(而不是使用 NSImage 的 lockFocus()/unlockFocus() 和 NSGraphicsContext. current),但可惜的是,當我添加一個context.scaleBy(以生成不同尺寸的影像)時,它又失敗了。
所以現在我只是在主執行緒上進行操作,直到有其他解決方案出現。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320045.html
標籤:
