2016-08-11 4 views

Antwort

1

Sie können dies tun:

// Gets image from your file directory 
UIImage *image = [UIImage imageWithContentsOfFile:@"path/to/your/directory"]; 
// Converts it to NSData type. 
NSData *imageData = UIImageJPEGRepresentation(image, 1); 
// Converts it to base64 string. 
NSString *encodedString = [imageData base64Encoding]; 



// Swift 

var image: UIImage = UIImage.imageWithContentsOfFile("path/to/your/directory")! 
    // Converts it to NSData type. 
var imageData: NSData = UIImageJPEGRepresentation(image, 1) 
    // Converts it to base64 string. 
var encodedString: String = imageData.base64Encoding() 
+0

Die Frage hat die Tags 'swift' und 'swift2'; Sie könnten den Code Ihrer Antwort in Swift ändern. –

0

Ich habe alle drei Szenarien hinzugefügt (Die drei Beispiele sind nicht verwandt) 1. das Bild konvertieren. 2. das Bild aus dem Verzeichnisdateien zu finden 3. Veröffentlichung des Bildes auf dem Server

Hier ist, wie Sie ein base64 Bild

//Use image name from bundle to create NSData 
let image : UIImage = UIImage(named:"imageNameHere")! 
//Now use image to create into NSData format 
let imageData:NSData = UIImagePNGRepresentation(image)! 

//OR next possibility 

//Use image's path to create NSData 
let url:NSURL = NSURL(string : "urlHere")! 
//Now use image to create into NSData format 
let imageData:NSData = NSData.init(contentsOfURL: url)! 

Hier erstellen, wie Sie das Bild aus dem Dateimanager finden

NSString *searchFilename = @"hello.png"; // name of the PDF you are searching for 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory]; 

NSString *documentsSubpath; 
while (documentsSubpath = [direnum nextObject]) 
{ 
    if (![documentsSubpath.lastPathComponent isEqual:searchFilename]) { 
    continue; 
    } 

    NSLog(@"found %@", documentsSubpath); 
} 

die Anfrage zu senden, habe ich NSMutableURLRequest die JSON Anfrage

var request = NSMutableURLRequest(URL: NSURL(string: url)) 
request.HTTPMethod = "POST" 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 
zu handhaben

Um den HTTPBody vorzubereiten, musste ich das Bild in eine Base64-Zeichenfolge codieren. Dies geschieht durch folgendes:

var imageData = UIImageJPEGRepresentation(image, 0.9) 
var base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.fromRaw(0)!) // encode the image 

Nachdem ich dies getan habe, habe ich das codierte Bild in einem Dictionary in den entsprechenden Parameter. Ich habe es in eine JSON-Repräsentation serialisiert, die ich dem HTTPBody zugewiesen habe.

var err: NSError? = nil 
var params = ["image":[ "content_type": "image/jpeg", "filename":"test.jpg", "file_data": base64String]] 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions(0), error: &err)! 

Ich verwendete das freigegebene Sitzungsobjekt, um eine Aufgabe zu erstellen, um die Anfrage zu senden. Ich habe ein Anforderungsmodell erstellt, das ich in ein MutableURLRequest umwandeln kann. Sie können sehen, wie es hier aussieht.

var session = NSURLSession.sharedSession() 
var task = session.dataTaskWithRequest(request.toMutableURLRequest(), completionHandler: { data, response, error -> Void in 
    var strData = NSString(data: data, encoding: NSUTF8StringEncoding) 
    var err: NSError? 

    // process the response 
}) 

task.resume() // this is needed to start the task 

Nachdem die Anfrage abgeschlossen ist, wird der Block, den ich über den CompletionHandler übergeben habe, ausgeführt. Von dort konnte ich die Antwort bewerten. So konnte ich das von der Kamera meines Handys aufgenommene Bild an den Server senden.

Verwandte Themen