UIImage to base64字符串编码

app*_*ple 44 iphone objective-c

如何转换UIimage为base64编码的字符串?我找不到任何有详细说明的例子或代码.

Sag*_*gar 56

我想知道你为什么没有找到你的问题,因为这是一个非常古老的问题,可以在这里这里找到.

无论如何,您需要先NSData在项目中添加可从此处获得的类别 -

标头实现 然后将您的UIImage对象转换NSData为以下方式:

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
Run Code Online (Sandbox Code Playgroud)

然后应用Base64编码将其转换为base64编码字符串:

NSString *encodedString = [imageData base64Encoding];
Run Code Online (Sandbox Code Playgroud)

  • NSString*encodedString = [imageData base64Encoding]; (2认同)

Abi*_*ern 47

iOS 7中有一些更改允许在不使用任何外部类别的情况下完成此操作以支持Base64编码/解码.

您可以直接使用以下方法编写它:

- (NSString *)base64String {
    return [UIImagePNGRepresentation(self) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这些方法已经在iOS 7中引入,但是`base64Encoding`已经可用于iOS 4.因此,除非您仍然支持iOS 2或3,否则您可以使用`base64Encoding`或@Abizern提及,而无需任何外部框架. (4认同)
  • 传递'0`的选项而不是`NSDataBase64Encoding64CharacterLineLength`时,我的运气更好.这样它就不会插入任何换行符,并且可以在UIWebView中的`data:`URI中使用. (2认同)

Bha*_*hat 9

您可以按照以下代码

-(NSString *)imageToNSString:(UIImage *)image
{
NSData *imageData = UIImagePNGRepresentation(image);
    return [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

-(UIImage *)stringToUIImage:(NSString *)string
{
 NSData *data = [[NSData alloc]initWithBase64EncodedString:string
                                                     options:NSDataBase64DecodingIgnoreUnknownCharacters];
    return [UIImage imageWithData:data];
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*isu 7

@implementation UIImage (Extended)

- (NSString *)base64String {
    NSData * data = [UIImagePNGRepresentation(self) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return [NSString stringWithUTF8String:[data bytes]];
}

@end
Run Code Online (Sandbox Code Playgroud)