将图像路径数组转换为 base64 编码字符串。?

Convert array of image path into base64 encoded string.?

我想将文档目录中的图像路径数组转换为编码的 base 64 字符串。

这是我的代码

NSArray *recipeImages = [savedImagePath valueForKey:@"Image"];

此数组包含图像(多个图像)的路径。

这是数组在日志中的样子。

 Saved Images == (
"/Users/ZAL02M/Library/Developer/CoreSimulator/Devices/F1F3C01E-8686-4367-82FB-80B003E2F416/data/Containers/Data/Application/694494B1-0DCA-497A-B8B0-586276EEF240/Documents/cached0.png",
"/Users/ZAL02M/Library/Developer/CoreSimulator/Devices/F1F3C01E-8686-4367-82FB-80B003E2F416/data/Containers/Data/Application/694494B1-0DCA-497A-B8B0-586276EEF240/Documents/cached1.png"
 )

如何制作base64字符串???

通过 base64EncodedStringWithOptions:

将您的 ImagePaths(字符串)转换为 NSData 并从 NSData 转换回字符串

这里是代码:

NSArray *recipeImages = [savedImagePath valueForKey:@"Image"];
NSMutableArray *mutableBase64StringsArray = @[].mutableCopy;

for (NSString *imagePath in recipeImages)
{
    NSData *imagePathData = [imagePath dataUsingEncoding:NSUTF8StringEncoding];
    NSString *base64ImagePath = [imagePathData base64EncodedStringWithOptions:0];
    [mutableBase64StringsArray addObject:base64ImagePath];
}

mutableBase64StringsArray 中,所有图像路径都是 base64 编码字符串。

查看来自 SO 的 post 以获得更多解释:Base64 Decoding in iOS 7+

你可以试试这个

Encoding :

- (NSString *)encodeToBase64String:(UIImage *)image {
 return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

Decoding :

- (UIImage *)decodeBase64ToImage:(NSString *)strEncodeData {
  NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters];
  return [UIImage imageWithData:data];
}

要从您的 path 获取 image,您可以使用此代码

NSString* imagePath = [recipeImages objectAtIndex:i];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];

然后将 encoded content 添加到您的 array.

希望对您有所帮助。

试试这个循环所有图像并将每个编码字符串保存到一个新数组中:

NSMutableArray *encodedImages = [NSMutableArray new];

for (NSString *path in recipeImages)
{
    UIImage *image       = [UIImage imageWithContentsOfFile:path];
    NSData *imageData    = UIImagePNGRepresentation(image);
    NSString *dataString = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

    [encodedImages addObject:dataString];
}