将UIImages数组转换为base64字符串

时间:2015-12-14 13:30:56

标签: ios objective-c arrays uiimage base64

我有一个包含多个图像(UIImage)的数组:

NSMutableArray *myImages = [[NSMutableArray alloc] initWithArray:attachment];

我希望用逗号将其作为base64 string传递给API服务器。例如,(Base64StringImage1),(Base64StringImage2)等。

注意:这就是我以前用于单个非数组图像的方式。

(NSData *)attachment //get as a parameter

NSData *base64Data = [attachment base64EncodedDataWithOptions:0];
NSString *str = [[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
NSString *base64Image = [NSString stringWithFormat:@"%@,%@", str, @"image1"];

parameters[@"Attachment"] = base64Image; //pass to API as parameter

非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

在我看来,你已经拥有了所需的一切。只需创建一个可变字符串,并使用for循环追加每个base64编码的图像,沿着以下行(快速键入并且未测试):

NSMutableString *result = [NSMutableString new];
for (int i = 0; i < myImages.count; i++) {
    NSData *base64Data = [myImages[i] base64EncodedDataWithOptions:0];
    NSString* str = [[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
    NSString *base64Image = [NSString stringWithFormat:@"(%@,%@%d),", str, @"image", i+1];
    [result appendFormat:@"%@", base64Image];
}

然后您可以删除最后一个逗号,并且您拥有所需的字符串。

答案 1 :(得分:0)

NSMutableArray *myImagesData = [[NSMutableArray alloc] init];
if (myImages.count != 0){
    for (int i = 0; i <= myImages.count-1; i++) {
        UIImage *img = myImages[i];
        NSData *base64Data = [img base64EncodedDataWithOptions:0];
        NSString *str = [[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
        [myImagesData addObject:str];
    }
}
//you will get all images data in array