2012-04-20 13 views
3

IはAVCaptureSessionを使用してカメラから画像を取り込むだ:コアデータから読み込んだiPhone UIImageを反時計回りに90度回転します。直し方?

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 

画像をUIImageに変換されると、画像ビューに追加されます。イメージは、縦向きで表示されます。

キャプチャセッション間でイメージをコアデータに保存しようとしています。私のコアデータエンティティは、バイナリデータ型のimageプロパティを持っています。

coreDataEntity.image = UIImagePNGRepresentation(imageView.image); 

ユーザが以前に保存されたセッションを再ロードしたら、画像ビューは、その画像を使用して復元している、しかしながら

imageView.image = [UIImage imageWithData:coreDataEntity.image]; 

を、復元された画像は、それが左上を指します90度反時計回りに回転されます。

どの時点で画像が回転しますか?コアデータの保存中またはロード中ですか?

私はUIImageを90度回転させる方法がありますが、同じ画像を後で再読み込みすると、余分な90度回転して表示されます。私はすでにUIImageを1度回転したことをどのように知ることができますか?

ありがとうございました!

+3

この投稿を表示することができます:http://stackoverflow.com/q/3554244/1228534 – graver

答えて

5

を、私は、データベース内の形式を強制しないでしょうあなたのポストで多くの情報が本当にありません。データベースに格納する前にPNGに変換することで、おそらく必要な情報(向きなど)が削除されます。

[NSKeyedArchiver archivedDataWithRootObject:image] 

、これをカプセル化することができ、NSValueTransformerをチェックしてください、また、この

[NSKeyedUnarchiver unarchiveObjectWithData:imageData] 

をデシリアライズ:私の仮説が正しければ

は、代わりにこのようにUIImageをシリアル化しようとします一度変換すると、それを処理する必要はありません。

+0

偉大な答えをありがとう、これは働いた! –

+0

NSValueTransformerでカプセル化する方法の例を挙げることができますか?私はそのステップを本当に理解していません。 – zakdances

1

私の推測では、ロード中でも保存中でもないと思います。私はあなたがイメージを90度回転させる方法を持っていることが疑わしいと思っています。それはあなたのイメージに起こっていることだけです。別の角度(例えばゼロ)で回転させるようにメソッドを修正し、それがあなたのバグに影響するのを見てください。私はあなたの回転メソッドが呼び出され、あなたがそれを知らないと思う。

別の可能性として、あなたの写真を撮るときにあなたのiPhone/iPadを横向きに保持しても、アプリがデバイスの回転をサポートしていない可能性があります。

私はちょうどここで釣りをしていますので:)

+0

ありがとうございました!私はバグを見つけた後にローテーションメソッドを取得しました。ローテーションメソッドの問題ではありません。むしろ根本的な原因を見つけたら、問題を解決するためにそれを使用したかったのです。 –

5

1年後にはあなた自身がおそらくこの問題を解決したでしょうが、私はこの問題を最近経験しています。

保存された画像形式をJPEGに変更しました。

変更

coreDataEntity.image = UIImagePNGRepresentation(imageView.image); 

coreDataEntity.image = UIImageJPEGRepresentation(imageView.image,1.0f); 

に画像を

imageView.image = [UIImage imageWithData:coreDataEntity.image]; 

以前のように復元され、これは誰かに役立ちます願っています。

関連する問題