通过Base64编码可以将图片转换成字符串进行传输,通过这种方式可以很便捷的使图片在前后端传递,但是这通常只适用于小图片,否则转换后的Base64字符将很大,并不利于传输。
在iOS端可以通过以下方法进行转换。
Base64字符转图片
NSData *imageData = [[NSData alloc] initWithBase64EncodedString:@"your base64 string" options:NSDataBase64DecodingIgnoreUnknownCharacters];
YourImageView.image = [UIImage imageWithData:imageData]
图片转Base64字符
NSData *imageData = UIImageJPEGRepresentation(yourImage, 1.0f);
NSString *base64ImageStr = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
Note
关于NSDataBase64EncodingOptions
NSDataBase64Encoding64CharacterLineLength //将生成的Base64字符串按照64个字符长度进行等分换行
NSDataBase64Encoding76CharacterLineLength //将生成的Base64字符串按照76个字符长度进行等分换行
NSDataBase64EncodingEndLineWithCarriageReturn //将生成的Base64字符串以回车结束
NSDataBase64EncodingEndLineWithLineFeed //将生成的Base64字符串以换行结束
Solution
有时候,后台传回的Base64字符是这种格式的:data:image/png;base64,iVBORw0K.............""
这个时候直接进行转换会失败,解决方法是去掉前缀:"data:image/png;base64,"