2011-11-10 6 views
8

お読みいただきありがとうございます。CoreImageを使用して画像をフィルタリングすると、画像が回転します。

iOS 5でCoreImageを使用して画像の外観を変更しようとしています。問題は、既存の画像が処理中にその向き情報を失うように見え、90度回転してしまうことである。

ここではコードです:

CIContext *context = [CIContext contextWithOptions:nil]; 
CIImage *img = [CIImage imageWithCGImage:imageView.image.CGImage]; 
CIFilter *adjustFilter = [CIFilter filterWithName:@"CIHighlightShadowAdjust"]; 

[adjustFilter setDefaults]; 
[adjustFilter setValue:img forKey:kCIInputImageKey]; 
[adjustFilter setValue:[NSNumber numberWithFloat:0.3] forKey:@"inputShadowAmount"]; 
CIImage *adjustedImage = [adjustFilter valueForKey:kCIOutputImageKey]; 
UIImage *newPtImage = [UIImage imageWithCGImage:[context adjustedImage fromRect:adjustedImage.extent]]; 

imageView.image = newPtImage; 

原画像は、一般的にカメラで撮影されたものから来て、常にではないが。

誰かが助けてくれることを願っています。

Rob。

答えて

2

はあなたが前の回答の方法に画像を渡すあなたの問題を解決することができ、この答えhttps://stackoverflow.com/q/538064/871102

を見てください。だから、代わりに:

CIImage *img = [CIImage imageWithCGImage:imageView.image.CGImage]; 

書き込み:

UIImage *fixedImage = [self scaleAndRotateImage:imageView.image]; 
CIImage *img = [CIImage imageWithCGImage:fixedImage.CGImage]; 

UPDATE:

ここで画像拡大縮小せずに、よりエレガントな答えがあります:iOS UIImagePickerController result image orientation after upload

+0

ありがとうございました。私は実際に –

+3

を追加して私の特定の問題を解決しました。これはうまくいきませんでした。それはコードを通過したが、何も起こらなかった。それはあまりにも長く、ハッキーです。 –

+0

スウィフトではどうですか?誰か教えてください! – Pixele9

35

実際、私の問題に対する解決策は非常に簡単でした。 CGImageはその向きとスケールファクターを失うので、私は単純に早いコードに

UIImageOrientation originalOrientation = imageView.image.imageOrientation; 
CGFloat originalScale = imageView.image.scale; 

を追加するために必要な、その後の代わりにこれを使用し[UIImage imageWithCGImage:]の提案のための

UIImage *newPtImage = [UIImage imageWithCGImage:img2 scale:originalScale orientation:originalOrientation]; 

感謝をあまりにも。

+0

ありがとうRob。これは完全に機能しました! –

関連する問題