1

UIImageView(selectedImage)のサイズに基づいてAVFoundationカメラのサイズを次のように設定しようとしています。

    self.sess = [AVCaptureSession new];
    self.snapper = [AVCaptureStillImageOutput new];
    self.snapper.outputSettings = @{AVVideoCodecKey: AVVideoCodecJPEG};
    self.sess.sessionPreset = AVCaptureSessionPresetPhoto;
    [self.sess addOutput:self.snapper];
    AVCaptureDevice* cam = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice:cam error:nil];
    [self.sess addInput:input];
    AVCaptureVideoPreviewLayer* lay = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.sess];
    lay.videoGravity = AVLayerVideoGravityResizeAspectFill;
    lay.frame = selectedImage.frame;
   [self.view.layer addSublayer:lay];

アプリでは、320X320サイズで問題なく表示されますが、フォトギャラリーを見ると、保存された画像が正方形よりも長くなっています。

また、削除しようとしlay.videoGravity = AVLayerVideoGravityResizeAspectFill;ましたが、アプリの画像が画面いっぱいに表示されません。

ショット画像のサイズも、ユーザーが余分な尾を付けずにカメラで見るサイズに設定するにはどうすればよいですか?

アプリでキャプチャした後の画像 フォトアルバムに保存される画像 カメラ画像アスペクトフィルなし

これは、画像をギャラリーに保存するコードです。

AVCaptureConnection *vc = [self.snapper connectionWithMediaType:AVMediaTypeVideo];
// deal with image when it arrives
typedef void(^MyBufBlock)(CMSampleBufferRef, NSError*);
MyBufBlock h = ^(CMSampleBufferRef buf, NSError *err) {
    NSData* data = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:buf];
    UIImage* im = [UIImage imageWithData:data];
    dispatch_async(dispatch_get_main_queue(), ^{
        selectedImage.hidden = NO;
        selectedImage.contentMode = UIViewContentModeScaleAspectFill;
        selectedImage.clipsToBounds = YES;
        selectedImage.image = im;
        [self.previewLayer removeFromSuperlayer];
        self.previewLayer = nil;
        [self.sess stopRunning];
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        [library writeImageToSavedPhotosAlbum:[selectedImage.image CGImage] orientation:(ALAssetOrientation)[selectedImage.image imageOrientation] completionBlock:nil];
4

1 に答える 1

0

自分で画像をトリミングする必要があると思います。ビューファインダーの縮小サイズは、処理されるデータの量ではなく、目に見える形状にのみ影響を与えました。

画像をトリミングする方法の例は、iPhone 4G で撮影した画像を適切にトリミングするには (EXIF 回転データを使用)? にあります。

于 2013-01-28T20:51:51.513 に答える