2011-07-10 3 views
0

Je suis nouveau au développement d'iphone. J'écris mon application en mode Mono.NSURL au chemin de fichier Monotouch

J'essaye d'obtenir une photo de la bibliothèque de ressources que je peux faire avec succès cependant j'obtiens le chemin comme URL "assets-library: //asset/asset.JPG". Je veux faire une lecture FileStream qui demande un chemin de fichier. Comment puis-je convertir NSURL à un chemin de fichier?

I utilisé asset.DefaultRepresentation.Url.AbsoluteString qui donne la filePath suivante: actifs bibliothèque: //asset/asset.JPG id = 1000000001 & ext = JPG

puis quand il frappe le FileStream (filePath, FileMode.Open, FileAccess.Read) il donne une exception indiquant qu'il n'a pas pu trouver une partie du chemin.

S'il vous plaît aider :)

Répondre

1

L'URL que vous obtenez de la bibliothèque d'actifs n'est pas un chemin de fichier. Il s'agit d'une URL vers une ressource dans la bibliothèque d'actifs. Vous ne pouvez donc pas utiliser FileStream pour lire ses données.

Si l'actif est une image, vous pouvez obtenir son contenu à un objet NSData comme ceci:

UIImage image = UIImage.FromImage(asset.DefaultRepresentation.GetImage()); 
NSData data = image.AsJPEG(); 
+0

Si vous utilisez le UIImagePickerController vous pouvez utiliser quelque chose de très similaire pour obtenir le fichier (dans la commande prioritaire FinishedPickingMedia): 'UIImage image = (UIImage) info.ObjectForKey (nouveau NSString ("UIImagePickerControllerOriginalImage"));' – Luke

+0

Oui, mais le UIImagePickerController n'est pas utilisé ici. L'image est extraite de la bibliothèque d'actifs. ;) –

+0

Je sais - c'était plus si incase quelqu'un a trébuché sur cette page à la recherche d'un exemple UIImagePickerController;) – Luke

0

Vous pouvez utiliser deux méthodes statiques différentes pour charger une image. FromImage et FromBundle. Le premier est asynchrone. Ce dernier est synchrone (lorsqu'une image est chargée, elle est encaissée par iOS). Les deux prennent le chemin de votre image. Lorsque vous utilisez ces méthodes, l'image de propriété doit être définie sur la propriété content. Clic droit sur l'image, propriété -> Définir l'action de construction au contenu.