2009-10-28 4 views
3

iPhone 카메라의 해상도를 얻는 방법이 있습니까? 외관상으로는 3G에는 1200x1600가 있고 3GS에는 1500x2000가있다, 그러나 나는 그림 안에 나의 부호 안쪽에이 가치를 얻는가 방법. 나는 그들에게 카메라 프리뷰로 약간의 affine 변환을시켜야한다.iPhone의 카메라 해상도를 가져 옵니까?

3G 또는 3GS에서이 값을 하드 코딩했는지 감지 할 수 있지만 최후의 수단 일뿐입니다.

답변

7

"최후의 수단"이 좋은 해결책이라고 생각합니다.

모델 검색에 문제가 있습니까? 하드웨어는 이러한 모델 중 하나에서 변경되지 않을 것입니다. 3GSX-R 또는 그 밖의 것이 16mpx 카메라와 함께 나오는 경우에만 우려 할 수 있습니다. 어쨌든 어쨌든 앱을 업데이트해야하고 목록에 다른 값을 추가 할 수 있습니다.

모델 검색에 투표합니다.

+0

: 애플은 다른 카메라 해상도가 다른 아이폰을 만드는 경우, 나는 것 내 응용 프로그램을 강제로 업데이트해야합니다. 오 잘, 나는 이것에 고수 할 필요가있을 것 같다. 응답 해 주셔서 감사합니다. – iamj4de

+0

내가 그렇게하는 이유는 애플이 다른 아이폰을 만들면 앱 업데이트가 필요한 다른 이유가 있기 때문이다. – snicker

0

애플은 하드웨어와 직접 대화 할 수 없기 때문에 합법적 인 앱 스토어 제품에 대한 선택의 여지가 거의 없습니다.

0

나는 snicker의 대답이 틀림없이 정확한 것 같아. 나는 이것을 재미로 게시하겠다고 생각했다.

당신은 아이폰에 저장된 사용자 사진 앨범을 볼 수있다. (나는 제한없이 아이폰에 프로그램 방식으로 할 수 있다는 대담한 가정을하고있다 !!) 전화상의 사진들은 대부분 그 자체의 전화라면, 평균 사진 해상도가 무엇인지 알아낼 수 있습니다.

+0

어쨌든! 그 downvote 조금 가혹한입니다! – Lee

+2

사람들은 "재미있는"대답에 눈살을 찌푸리게됩니다. 나는 농담을 시작하는 법을 배워야했다.]] – snicker

+0

불행히도, 당신의 대담한 가정은 올바르지 않습니다. 프로그래밍 방식으로 사진 라이브러리를 탐색 할 수있는 문서화 된 방법은 없습니다. –

0

왜 사진을 찍지 않으시겠습니까? UIImagePickerController의 takePicture 메서드를 사용하여 필요한 보정 단계임을 사용자에게 알립니다. 그런 다음 그림의 해상도를보고 지속적으로 값을 저장하고 찍은 그림을 삭제하십시오. 그 후에, 당신은 당신의 결의안을 가지고 거기에 변형을 적용 할 수있을 것입니다.

+0

왜냐하면 내가 찍은 사진으로 변환하는 것이 아니라 미리보기 카메라로 변환하고 싶기 때문입니다. takePicture를 호출 할 수 없습니다. – iamj4de

2

아핀 변환을 설정하기 위해 이미지의 해상도를 정말로 알고 싶습니까? 보기가 화면의 너비를 덮기 위해 미리 설정되어 있기 때문에 화면의 어느 부분을 차지할지를 기준으로 변환을 변경할 수 있습니다. 즉, 미리보기가 160 픽셀 이상이어야하는 경우 축소 만하면됩니다. 기본값에서 50 %. 나는 지금 애플 리케이션에서 이것을하고 있으며, 새로운 오래된 아이폰에서 작동합니다 ...

+0

아마도 이것이 올바른 방법 일 것입니다. UIImagePickerController의 cameraViewTransform 속성을 참조한다고 가정합니다. –

+0

예, 코드를 사용합니다. \t self.camera.cameraViewTransform = CGAffineTransformTranslate (CGAffineTransformMakeScale (0.5f, 0.5f), -160, -211); \t 줄을 서서히 얻으려면 ... –

+1

복잡한 변환이 필요한 경우가 있으므로 변환 + 회전 + 비율로 구성하십시오. 카메라 해상도가 없으면 불가능합니다. – iamj4de

2

게시물은 오래되었지만 Google에서 거의 처음이며 유효 답변이 없으므로 여기에 하나 더 있습니다. 옵션 :

4.x에서 7까지의 iOS 용 솔루션.X

AVCaptureSession 구성하고 내부에 비디오 크기를 찾을 수 있습니다 시작

후 모든 AV Foundation 프레임 워크의 관점에서의 [[[session.inputs.lastObject] ports].lastObject formatDescription] 변수

여기에 대략적인 코드입니다 : iOS8의에 대한

AVCaptureSession* session = ...; 
AVCaptureDevice *videoCaptureDevice = ...; 
AVCaptureDeviceInput *videoInput = ...; 

[session beginConfiguration]; 
if ([session canAddInput:videoInput]) {[session addInput:videoInput];} 
[session commitConfiguration]; 
[session startRunning]; 

//this is the clue 
AVCaptureInputPort *port = videoInput.ports.lastObject; 
if ([port mediaType] == AVMediaTypeVideo) 
{ 
    videoDimensions = CMVideoFormatDescriptionGetDimensions([port formatDescription]); 
} 

솔루션

애플이 다시 모든 것을 변경 않았다 : 지금 당신이 여기 AVCaptureInputPortFormatDescriptionDidChangeNotification

을 위해 가입해야하는 샘플입니다 :

-(void)initSession 
{ 
    AVCaptureSession* session = ...; 
    AVCaptureDevice *videoCaptureDevice = ...; 
    AVCaptureDeviceInput *videoInput = ...; 

    [session beginConfiguration]; 
    if ([session canAddInput:videoInput]) {[session addInput:videoInput];} 
    [session commitConfiguration]; 
    [session startRunning]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(avCaptureInputPortFormatDescriptionDidChangeNotification:) 
      name:@"AVCaptureInputPortFormatDescriptionDidChangeNotification" 
      object:nil]; 
} 

-(void)avCaptureInputPortFormatDescriptionDidChangeNotification:(NSNotification *)notification 
{ 
    AVCaptureInputPort *port = [videoInput.ports objectAtIndex:0]; 
    CMFormatDescriptionRef formatDescription = port.formatDescription; 
    if (formatDescription) { 
     videoDimensions = CMVideoFormatDescriptionGetDimensions(formatDescription); 
    } 

} 
나는 그 이유가 정확히 연기했다
+0

마지막 개체는 차원을 0x0으로 반환합니다. 첫 번째 객체는 대신 비디오의 크기를 제공합니다 (비디오 프레임 이라기보다는). – neeraj

+0

저를 위해 작동하지 않습니다 : 0,0 –

+0

@neeraj 정상적인 방법으로 모든 포트를 조사하고'[[port mediaType] isEqualToString : AVMediaTypeVideo ]' – Rosik

관련 문제