Como é que a câmera padrão iPhone app consegue salvar uma foto tão rápido?

votos
4

Até agora eu consegui criar um aplicativo para iPhone que leva várias imagens com cerca de 3 segundos de intervalo entre cada. I`m processamento de cada imagem em um segmento separado de forma assíncrona e tudo é grande até que ele chegue ao momento para salvar a imagem no disco iPhone. Em seguida, ele leva cerca de 12 segundos para salvar a imagem para o disco usando representação JPEG.

Como é que a Apple fazer isso, como é que eles conseguem salvar uma única imagem tão rápido para o disco há um truque que eles estão usando? Vi que as animações distrair o usuário por um tempo, mas ainda assim o tempo necessário é inferior a 12 segundos!

Desde já, obrigado.

Publicado 19/10/2009 em 08:35
fonte usuário
Em outras línguas...                            


4 respostas

votos
4

Na verdade, a Apple usa sua AppleJPEGDriver motorista kernal, É uma codificação api jpeg hardware e é muito mais rápido do que a codificação de software (JPEGRepresnetaion) e algumas das pessoas que a utilizam em seus aplicativos jailbreak (Cycorder aplicativo de gravação de vídeo). Apple deve dar a mesma funcionalidade para seus usuários, mas eles são maçã :)

Respondeu 11/05/2010 em 05:05
fonte usuário

votos
2

Eu não tentei isso, mas eu não teria tanta certeza que a Apple não está usando os mesmos métodos. Uma grande parte da filosofia de design da Apple se baseia em esconder interrupções operacionais do usuário. O código a Apple pode demorar tanto tempo como o seu, mas simplesmente ser hábil em esconder toda a economizar tempo a partir da percepção do usuário.

Se alguém não pode dizer-lhe como a Apple realmente não salvar mais rápido eu sugiro procurando maneiras de disfarçar o tempo de salvar.

Respondeu 19/10/2009 em 15:12
fonte usuário

votos
0

Eu estava tendo este problema na minha aplicação, sobre a poupança seria pendurar então eu usei expedição Grand Central.

Abaixo está o método setImage da minha imagem Classe cache, se UIImage tem uma imagem que poupa-lo caso contrário, exclui-lo. Você pode adaptar isso para atender às suas necessidades, esperamos, irá funcionar apenas no iOS 4+. O código é ARC habilitado.

-(void)setImage:(UIImage *)image{
    if (image == nil){
    NSLog(@"Deleting Image");
    // Since we have no image let's remove the cached image if it exists
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                   NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
                   NSUserDomainMask, YES) objectAtIndex:0];
                   [[NSFileManager defaultManager] removeItemAtPath:[cachePath
                   stringByAppendingPathComponent:@"capturedimage.jpg"] error:nil];
                 });
    }
else {
      NSLog(@"Saving Image");
      // We've got an image, let's save it to flash memory.
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                     NSString *cachePath = 
                    [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,
                    NSUserDomainMask, YES) objectAtIndex:0];
                    NSData *dataObj = UIImagePNGRepresentation(image);
                    [dataObj writeToFile:[cachePath 
                    stringByAppendingPathComponent:@"capturedimage.jpg"] atomically:NO];
                  });
     }

imageCache = image;

}
Respondeu 20/05/2012 em 00:42
fonte usuário

votos
0

Se você procurar no google em torno de um pouco ... há um monte de pessoas com o mesmo problema.

Eu não encontrar uma resposta. A conclusão geral parece ser que a Apple quer usa algumas api e desvio api pública sobrecarga interna ou algum codificador de hardware.

Acho que você está fora de sorte para a poupança de imagem rápido

Respondeu 19/10/2009 em 08:44
fonte usuário

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