Obter resolução da câmera do iPhone?

votos
3

Existe alguma maneira de obter a resolução da câmera do iPhone? Aparentemente, o 3G tem 1200x1600, e 3GS tem 1500x2000, mas como faço para obter esses valores de dentro do meu código (sem tirar a foto). Eu preciso deles para fazer alguma transformação afim à visualização da câmera.

Eu poderia detectar se é 3G ou 3GS para codificar estes valores, mas é apenas o último recurso.

Publicado 28/10/2009 em 16:51
fonte usuário
Em outras línguas...                            


6 respostas

votos
7

Eu acho que seu "último recurso" é uma boa solução.

O que há de errado com a detecção do modelo? O hardware não vai mudar para qualquer um desses modelos .. A única preocupação que você pode ter é se o 3GSX-R ou algo sai com uma câmera 16mpx. Em que ponto você provavelmente tem que atualizar seu aplicativo de qualquer maneira e poderia apenas adicionar outro valor à lista.

Eu voto para a detecção modelo.

Respondeu 28/10/2009 em 17:09
fonte usuário

votos
2

O post é antigo, mas é quase pela primeira vez em google, e ele tem nenhuma resposta válida, então aqui está mais uma opção:

Solução para iOS a partir 4.x para 7.x

É tudo em termos de AV Foundationquadro

Depois AVCaptureSessioné configurado e iniciado pode encontrar dimensões do vídeo dentro [[[session.inputs.lastObject] ports].lastObject formatDescription]variável

Aqui está o código aproximada:

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]);
}

Solução para iOS8

A Apple mudou tudo de novo: agora você deve se inscrever para AVCaptureInputPortFormatDescriptionDidChangeNotification

Aqui está o exemplo:

-(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);
    }

}
Respondeu 15/08/2012 em 17:26
fonte usuário

votos
2

Você realmente precisa saber a resolução da imagem para configurar a transformação afim? Desde o ponto de vista é pré-set-up para cobrir a largura da tela, você pode alterar a transformação com base no que fração da tela que você quer pegar, ou seja, se você precisa de visualização para ser de 160 pixels de largura, apenas reduzi-lo 50% do padrão. Estou fazendo isso em um aplicativo agora, e ele funciona em iPhones novos e antigos ...

Respondeu 19/11/2009 em 18:32
fonte usuário

votos
0

Por que você não quer tirar uma foto? Use de UIImagePickerController takePicture método, instruindo o usuário que este é um passo de calibração necessário. Depois disso, olhe para a resolução da imagem, persistentemente salvar o valor, e apagar a imagem que você tomou. Depois disso, você terá a sua resolução e será capaz de aplicar a transformação nele.

Respondeu 29/10/2009 em 10:02
fonte usuário

votos
0

Enquanto eu acho que a resposta de riso é definitivamente o correto. Eu pensei que eu ia postar isso por diversão.

Você pode olhar através do usuários armazenados álbum de fotos no iPhone (eu estou fazendo uma suposição ousada que isso pode ser feito através de programação no iPhone sem restrições !!) fazendo a suposição de que as fotos no telefone foram tomadas principalmente com o telefone é auto , você poderia, então, descobrir o que a resolução média da foto é e rolar com isso.

Respondeu 28/10/2009 em 18:22
fonte usuário

votos
0

Desde que a Apple não permite que você falar diretamente com o hardware, não há realmente muita escolha por um produto legítimo App Store.

Respondeu 28/10/2009 em 17:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more