Comment afficher un JPEG progressif dans un UIImageView alors qu'il est en cours de téléchargement?

StackOverflow https://stackoverflow.com/questions/4741486

Question

Téléchargement d'une image du filet et le montrer dans un UIImageView est assez facile. Cependant, cela nécessite l'image à télécharger complètement avant qu'elle ne soit présentée à l'utilisateur, défaisant complètement les images JPEG progressives (et PNG).

Comment puis-je rendre les images téléchargées partiellement alors que le transfert est fait? J'imagine le SDK d'avoir une fonction de rappel qui mettrait à jour l'image, mais je ne peux pas trouver une telle fonction. Est-il possible du tout avec le courant iOS SDK?

Était-ce utile?

La solution

Avez-vous essayé de rendre la partie UIImage comme didReceiveData est appelé ...? Quelque chose comme ...

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //TODO: add some error handling in case the image could not be created
    UIImage *img=[UIImage imageWithData:data];
    if (img) {
        self.imageView.image=img;
    }
}

Autres conseils

Je sais que ce post a environ 1 an, mais juste au cas où quelqu'un est à la recherche, il y a un projet appelé NYXImagesKit qui fait ce que vous recherchez.

Il a une classe nommée NYXProgressiveImageView qui est une sous-classe de UIImageView.

Tout ce que vous avez à faire est:

NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];

En outre, une bonne option est d'enregistrer vos images interlaced afin qu'il charge de faible qualité et améliorer le téléchargement. Si l'image n'entrelacée est chargé de haut en bas.

Il y a maintenant une petite bibliothèque open source sur le dessus de libjpeg-turbo qui permet le décodage et l'affichage progressif facilement les fichiers JPEG:

let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
    imageView.load(url)
}

voir https://github.com/contentful-labs/Concorde

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top