2010-09-07 25 views
3

Je suis actuellement en train de développer une application qui a une fonctionnalité de caméra, avec un écran d'appareil photo personnalisé, avec un écran de prévisualisation et une superposition. J'utilise les classes et méthodes AVFoundation selon l'éradication de UIScreenCapture. Le problème que j'ai est que les données de prévisualisation que je reçois de AVCaptureSession est trop zoomée. Si je prends une photo avec cet écran, et une autre avec l'application caméra par défaut de l'iPhone, sans déplacer l'iPhone, la différence de zoom est beaucoup trop.L'écran de prévisualisation de la caméra AVFoundation donne un mauvais zoom

J'ai besoin que le zoom de mon application soit le même que celui par défaut pour l'application appareil photo iPhone.

J'ai essayé de changer le AVCaptureVideoPreviewLayer.videoGravity, à l'une de ses 3 valeurs possibles, en vain.

S'il vous plaît, toutes les pistes sur ce problème sont vraiment appréciées.

Répondre

1

Il s'est avéré être un problème de résolution. Il a été fixé à l'aide

myCaptureSession.sessionPreset = AVCaptureSessionPreset640x480 

Notez que l'iPhone 3G ne supporte pas, donc vous devez demander wheter l'appareil supporte la solution de

[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAvCaptureSessionPreset:AVCaptureSessionPreset640x480] 
0

Le format de votre volet de prévisualisation est-il identique à celui des données de capture de l'appareil photo? Si ce n'est pas le cas, le système d'exploitation peut être en train de changer le zoom pour adapter le rectangle de données dans le rapport d'aspect demandé.

2

Arcantos était la plupart du temps correct. Cela fonctionnera en supposant que vous êtes sur un iPhone 3G (ou tout appareil avec une caméra qui prend en charge 640x480). Un iPhone 4 peut rencontrer des problèmes.

Une façon plus correcte serait de tester la disponibilité et cette valeur prédéfinie:

captureSession.sessionPreset = AVCaptureSessionPresetPhoto; 

Cela utilisera les données de la caméra premières, quelle que soit la résolution native.