我在目录中有图像。必须获取该图像并将其转换为 base64 字符串?

I have images in directory. have to get that image and convert into base64 string?

如何从目录中获取图片然后将其转换为base64string并通过网络服务发送。

你可以这样做:

// 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()

三个场景我都加了(三个例子一点关系都没有) 1.转换图像。 2.从文件目录中查找图像 3. 上传图片到服务器

这是创建 base64 图像的方法

//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)!

这是从文件管理器中查找图像的方法

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);
}

为了发送请求,我使用了 NSMutableURLRequest 来处理 JSON 请求

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

为了准备 HTTPBody,我必须将图像编码为 Base64 字符串。这是通过以下方式完成的:

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

完成此操作后,我将编码图像放入适当参数的字典中。我将其序列化为 JSON 表示形式,并将其分配给 HTTPBody。

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)!

我使用共享会话对象创建了一个任务来发送请求。我创建了一个可以转换为 MutableURLRequest 的请求模型。你可以在这里看到它的样子。

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

请求完成后,将执行我通过 completionHandler 传递的块。从那里,我能够评估响应。这就是我能够将 phone 的相机拍摄的图像发送到服务器的方法。