2

私はここStackoverflowでたくさんの質問を調べましたが、どれも私の問題を解決しませんでした。

したがって、私はAppleのAVCamサンプルを使用しています:http: //developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html

ですから、写真を撮って画像ライブラリに保存するときは問題ありませんが、画像をトリミングして画面に表示するときや、を使用してサーバーに送信するときは

NSData* pictureData = UIImageJPEGRepresentation(self.snappedPictureView.image, 0.9);

90度回転させて送ります!

これが私がそれを切り抜くコードです:

UIImage* cropped = [image imageByCroppingRect:CGRectMake(0, 0, (image.size.width *             300)/self.view.frame.size.width, (image.size.height * 300)/self.view.frame.size.height)];


imageByCroppingRect is:
- (UIImage *) imageByCroppingRect:(CGRect)area
{
UIImage *croppedImage;
CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], area);
// or use the UIImage wherever you like
croppedImage = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef);

return croppedImage;
}
4

1 に答える 1

2

画像をトリミングすると、その画像に関連付けられているメタデータが失われ、画像を適切に回転する方法が示されます。

代わりに、コードは次のように画像の元の回転を保持する必要があります。

- (UIImage *) imageByCroppingRect:(CGRect)rect {

    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], rect);
    UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
    CGImageRelease(imageRef);
    return result;
}
于 2012-09-20T12:58:43.960 に答える