我得到了这个Base64 gif图像:
R0lGODlhDAAMALMBAP8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAACH5BAUKAAEALAAAAAAMAAwAQAQZMMhJK7iY4p3nlZ8XgmNlnibXdVqolmhcRQA7
现在我想在我的iPhone应用程序中显示这个Base64字符串.
我可以通过使用WebView来实现这一点:
aUIWebView.scalesPageToFit = NO; aUIWebView.opaque = NO; aUIWebView.backgroundColor = [UIColor clearColor]; [aUIWebView loadHTMLString: @"" baseURL:nil];
是否可以通过使用UIImageView做同样的事情?
您不必编码.只需创建一个NSUrl,它就知道"data:" - url.
NSURL *url = [NSURL URLWithString:base64String]; NSData *imageData = [NSData dataWithContentsOfURL:url]; UIImage *ret = [UIImage imageWithData:imageData];
正如评论中所提到的,您必须确保使用前置数据,data:image/png;base64,
否则您的base64数据将毫无用处.
很老的问题,但是从iOS7开始,有一种新的,更简单的方法,因此我在这里写它,以便未来的读者可以使用它.
NSData* data = [[NSData alloc] initWithBase64EncodedString:base64String options:0]; UIImage* image = [UIImage imageWithData:data];
非常容易使用,并且不会达到URL的2048字节大小限制.
此代码将显示base64编码的字符串作为图片:
NSString *str = @"data:image/jpg;base64,"; str = [str stringByAppendingString:restauInfo.picture]; NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
restauInfo.picture是一个NSString,它包含base64编码的JPG
在我的例子中,"restauInfo.picture"中的值来自数据库
您可以执行以下操作:
(UIImage *)decodeBase64ToImage:(NSString *)strEncodeData { NSData *data = [[NSData alloc]initWithBase64EncodedString:strEncodeData options:NSDataBase64DecodingIgnoreUnknownCharacters]; return [UIImage imageWithData:data]; }
然后像这样称呼它:
UIImage *image = [self decodeBase64ToImage:dataString];