2017-09-29 30 views
3

写真ライブラリから写真を切り取った後、アプリケーションから表示できないという奇妙な問題があります。このコードを実行すると、このエラーが表示されます。奇妙なCoreImageクロッピングの問題が発生しました

 self.correctedImageView.image = UIImage(ciImage: correctedImage) 

[api] -[CIContext(CIRenderDestination) _startTaskToRender:toDestination:forPrepareRender:error:] The image extent and destination extent do not intersect.

ここでは、切り抜いて表示するためのコードです。 (inputImageとはCIImageある)

let imageSize = inputImage.extent.size 
    let correctedImage = inputImage 
     .cropped(to: textObvBox.boundingBox.scaled(to: imageSize)) 
    DispatchQueue.main.async { 
     self.correctedImageView.image = UIImage(ciImage: correctedImage) 
    } 

詳細:デバッグ

Printing description of self.inputImage: CIImage: 0x1c42047a0 extent [0 0 3024 4032]>

crop [430 3955 31 32] extent=[430 3955 31 32] affine [0 -1 1 0 0 4032] extent=[0 0 3024 4032] opaque affine [1 0 0 -1 0 3024] extent=[0 0 4032 3024] opaque colormatch "sRGB IEC61966-2.1"_to_workingspace extent=[0 0 4032 3024] opaque IOSurface 0x1c4204790(501) seed:1 YCC420f 601 alpha_one extent=[0 0 4032 3024] opaque

inputImageとの範囲を印刷し、correctedImageおかしい事は、私はXcodeのを使用して、ブレークポイントを置くとき、私はプレビューすることができたということです正しく切り取った画像。私はこの程度のものがCIImageのものなのかどうかはわかりませんが、UIMageViewは切り取った画像を割り当てたときにUIMageViewが好きではありません。この程度のことは何を考えているのですか?

+0

CoreImageは無限の平面上で動作します。範囲は、あなたが気にする画像データを実際に含んでいるその平面内の長方形です。 –

+0

エクステントを変更するにはどうすればよいですか? – mskw

+0

私はそれをuiimageviewに適用すると、私には受け入れられません。 – mskw

答えて

2

同じ問題が発生しました。 UIKit/CoreImageの不思議な動作のため、CIImageCGImageに変換する必要がありました。私は、以下に説明するCIImageにいくつかのフィルターを適用した場合にのみ起こったことに気付きました。

let image = /* my CIImage */ 
let goodImage = UIImage(ciImage: image) 
uiImageView.image = goodImage // works great! 


let image = /* my CIImage after applying 5-10 filters */ 
let badImage = UIImage(ciImage: image) 
uiImageView.image = badImage // empty view! 

これは私がそれを解決した方法です。

let ciContext = CIContext() 
let cgImage = self.ciContext.createCGImage(image, from: image.extent) 
uiImageView.image = UIImage(cgImage: cgImage) // works great!!! 

他のコメンターが作成用心述べてきたようにCIContextあまりにもしばしば。その高価な操作です。

関連する問題