私は、画像へのフィルタのリアルタイム適用が必要なアプリケーションを作成しています。 UIImage
をCIImage
に変換してフィルタを適用するのは非常に高速ですが、作成したCIImage
をCGImageRef
に変換するには時間がかかりすぎて、画像を表示するには時間がかかります(1/5秒、リアルタイムである必要があります)。CIImageを描画するのが遅すぎる
画像は、約2500の問題現在
の一部で、最も可能性が高い大2500個のピクセル、によって、私は私がEAGLContext.drawImage()
context.drawImage(image, inRect: destinationRect, fromRect: image.extent)
を使用してに見てきた
let image: CIImage //CIImage with applied filters
let eagl = EAGLContext(API: EAGLRenderingAPI.OpenGLES2)
let context = CIContext(EAGLContext: eagl, options: [kCIContextWorkingColorSpace : NSNull()])
//this line takes too long for real-time processing
let cg: CGImage = context.createCGImage(image, fromRect: image.extent)
を使用していています
しかし、これがどのように行われたか、それがもっと速くなるかについての確かな文書は見つかりません。
CIImage
を画面に表示する方法はありますか(UIImageView
、または直接CALayer
)?私は画質をあまり低下させないようにしたいと思います。これはユーザーには目立つかもしれないからです。
: 'VARの画像:CIImage? { did { self.setNeedsDisplay() } } } setRenderImageメソッド全体が廃止されました。 –
これをストーリーボードから操作するには、init?(coder :)でコンテキストを設定する必要があります(init(フレーム)で行ったように)。 –