2012-03-05 3 views
0

J'essaie de télécharger une image sur Internet. Je ne sais pas pourquoi ce code ne fonctionne pas lorsque je veux obtenir les photos avec ces spécifications (209x209 pixels, pas plus de 65KB).Enregistrement d'une image depuis Internet vers l'iPhone

L'écriture dans le répertoire iPhone:

NSData *imgAsData = [NSData dataWithContentsOfURL:imageURL]; 
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]]; 
//UIImage *image = [UIImage imageWithData:[NSData thumnail_url]];  
NSFileHandle* myFileHandle = [NSFileHandle fileHandleForWritingAtPath:self.product.img_url]; 
[myFileHandle writeData:UIImagePNGRepresentation(image)]; 
[myFileHandle closeFile]; 

J'ai même essayé writeToFile, mais il ne fonctionne toujours pas.

[imgAsData writeToURL: [NSURL URLWithString:self.product.img_url] atomically:YES]; 

lecture à partir du répertoire iPhone:

NSFileHandle* myFileHandle = [NSFileHandle fileHandleForReadingAtPath:self.product.img_url]; 
//NSFileHandle* myFileHandle = [NSFileHandle fileHandleForReadingAtPath:self.product.thumbnail_url]; 
UIImage* loadedImage = [UIImage imageWithData:[myFileHandle readDataToEndOfFile]]; 

J'utilisais ce code dans la même application pour télécharger des vignettes et ils travaillent (notez les lignes commentées à l'aide du « thumbnail_url »). J'ai essayé de substituer l'URL miniature à la place de cette image "plus grande" et cela a fonctionné. J'ai été en mesure d'enregistrer la vignette hors ligne, mais j'ai besoin d'obtenir la version plus grande (puisque, bien sûr, les vignettes sont trop pixélisées).

Je suis sûr que les chemins sont ok depuis que j'ai commencé à travailler.

Je suis perdu. Est-ce que ça ne marche pas parce que la taille du fichier est "plus grande"? Aide s'il vous plaît, merci!

+1

Etes-vous sûr que les chemins vers des images plus grandes sont OK? Pouvez-vous NSLog un chemin et copier-coller dans un navigateur pour voir si l'image apparaît? –

+0

@camden_kid pour l'image miniature, il apparaît dans le navigateur lorsque je colle l'URL. Mais pas pour l'image plus grande ... – acecapades

+0

Cela me dit que l'URL pour l'image plus grande peut ne pas être correcte. –

Répondre

0

Le problème est NSFileHandle fileHandleForWritingAtPath ne peut pas créer un fichier. Vous devez d'abord créer le fichier.

+0

Mais comment ça marche pour les images miniatures? Je voulais dire, il peut écrire des fichiers pour les vignettes ... Voulez-vous dire que je dois d'abord faire le chemin du fichier? J'ai déjà fait le chemin dans une autre partie de mon code ... Je l'utilise juste ici. – acecapades

+0

Le fichier doit exister sur le chemin. Si vous connaissez déjà le chemin, vous pouvez simplement écrire l'image comme ceci '[imgAsData writeToDisk];'. – bbarnhart

+0

Déboguez également votre code et assurez-vous de télécharger une image. Regardez la taille pour UIImage et validez c'est correct. – bbarnhart

0

Pour enregistrer des images pour iPhone utiliser simplement

UIImageWriteToSavedPhotosAlbum(<#UIImage *image#>, <#id completionTarget#>, <#SEL completionSelector#>, <#void *contextInfo#>) 

Si vous souhaitez enregistrer des images seulement 209 * 209 puis ajoutez un contrôle avant que la dimension d'une image. Je ne sais pas (encore) comment lire les images de l'iPhone, mais vous pouvez utiliser UIImagePickerController pour choisir les images.

Hope it helps

+0

Je veux essayer celui-ci aussi. Merci @Novarg – acecapades

Questions connexes