私は印刷のためにPDFを構成するために使用されるCocoaアプリケーションでスクリーンNSViewのシーケンスを持っています。ビューはNSWindowには表示されません。オフスクリーンNSViewからスケーリングされたイメージを生成
このビューのサムネイル画像は、PDFと同じように生成できますが、特定のピクセルサイズ(幅または高さに制限されている)に合わせて縮小できます。これはできるだけ速くする必要があるので、PDFにレンダリングしないでラスタとスケーリングに変換してください。ラスタに直接行きたいと思います。
私がやっている瞬間:
NSBitmapImageRep *bitmapImageRep = [pageView bitmapImageRepForCachingDisplayInRect:pageView.bounds];
[pageView cacheDisplayInRect:pageView.bounds toBitmapImageRep:bitmapImageRep];
NSImage *image = [[NSImage alloc] initWithSize:bitmapImageRep.size];
[image addRepresentation:bitmapImageRep];
このアプローチはうまく機能しているが、私はbitmapImageRepをレンダリングする前に、NSViewのにスケーリングを適用する方法を考え出すことはできません。 scaleUnitSquareToSize
の使用を避けたいのは、NSViewのフレームではなく、境界を変更するだけなので、理解しているからです。
これを行う最善の方法についてのご意見はありますか?
起動時にノートブックアプリケーションのサムネイルを動的に生成するために、 'bitmapImageRepForCacheDisplayInRect:'と 'cacheDisplayInRect:toBitmapImageRep:'を使用していました。多くのビジュアルコンテンツを持つ> 40ページ(レイヤーホストNSViews)では、サムネイルの生成に90秒近くかかっていました。以前のバージョンのmacOSではそうではありませんでした。私はこの方法を上記の@ tomtaylorのアプローチに置き換えました。スケール1.0を使用しました(サムネイルはフルサイズにアップスケールする必要があるため)。サムネイルの生成はバックグラウンドで20秒に短縮され、仮想メモリの使用量は約半分になりました。 – Dalmazio