2010-02-24 8 views
4

Je veux créer une application iPhone pour envoyer une image à mon serveur. Je veux dessiner quelque chose dans l'iPhone (ex: une signature) comme une image à l'image POST binaire à mon serveur (le serveur est JSP). S'il vous plaît dites-moi ce que je dois faire?Envoyer l'image au serveur en tant que données binaires

  • Comment utiliser l'interface utilisateur de l'iPhone?
  • comment rendre les données binaires de l'image, etc.

Répondre

12

Tout d'abord, vous pouvez obtenir un objet NSData contenant soit une représentation PNG ou JPEG des données d'image en utilisant les fonctions UIImagePNGRepresentation et UIImageJPEGRepresentation.

// To get the data from a PNG file 
NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

// To get the data from a JPEG file 
NSData *dataForPNGFile = UIImageJPEGRepresentation(yourImage, 0.9f); 

(pour plus d'informations, voir: UIImage Class Reference)

Pour terminer pour télécharger des données à partir de votre iPhone sur votre serveur, vous pouvez le faire:

- (void)sendImage { 
     NSData *postData = [nsdata from your original image]; 
     NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

     // Init and set fields of the URLRequest 
     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
     [request setHTTPMethod:@"POST"]; 
     [request setURL:[NSURL URLWithString:[NSString stringWithString:@"http://yoururl.domain"]]]; 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
     [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
     [request setHTTPBody:postData]; 

     NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
     if (connection) { 
      // Return data of the request 
      NSData *receivedData = [[NSMutableData data] retain]; 
     } 
     [request release]; 
} 
+0

Merci pour votre réponse. Au-dessus de votre guide, NSData est obtenu à partir d'un fichier PNG/JPEG qui existe partout. Mais je veux dessiner directement une signature sur iPhone et obtenir NSData. Ce que je dois faire? – MartinJoo

+2

que se passe-t-il si vous souhaitez également définir un couple de vars sur le serveur dans votre demande de publication? – joshue

+0

Cette question a presque 2 ans! Pour répondre aux questions originales et de suivi de l'auteur: Dans la réponse de Yannick, vous verrez la valeur "yourImage". Cette valeur est supposée représenter l'UIImage de votre image. Donc, si vous avez dessiné une image sur l'écran, et capturé une capture d'écran de l'image dans un UIImageView nommé "myImageView", vous référencer l'UIImage contenue dans ce ImageView, via "myImageView.image". L'UIImage serait alors traduit/sérialisé dans les données binaires (en utilisant la méthode ci-dessus) qui serait ajoutée à votre URLRequête. J'espère que cela clarifie les choses. :) – user298261

0

Utilisez la méthode drawrect pour faire des signatures sur un UIImage. Pour cela, vous devez utiliser un délégué UITouch

et utilisez les touches suivantes pour convertir votre objet UIImage à NSData

// To get the data from a PNG file 

NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

// To get the data from a JPEG file 

NSData *dataForPNGFile = UIImageJPEGRepresentation(yourImage, 0.9f); 
Questions connexes