当前位置:  开发笔记 > 编程语言 > 正文

如何在UIImageView中显示base64图像?

如何解决《如何在UIImageView中显示base64图像?》经验,为你挑选了4个好方法。

我得到了这个Base64 gif图像:

R0lGODlhDAAMALMBAP8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAACH5BAUKAAEALAAAAAAMAAwAQAQZMMhJK7iY4p3nlZ8XgmNlnibXdVqolmhcRQA7

现在我想在我的iPhone应用程序中显示这个Base64字符串.

我可以通过使用WebView来实现这一点:

aUIWebView.scalesPageToFit = NO;
aUIWebView.opaque = NO;
aUIWebView.backgroundColor = [UIColor clearColor]; 
[aUIWebView loadHTMLString:
  @""
 baseURL:nil];

是否可以通过使用UIImageView做同样的事情?



1> masche..:

您不必编码.只需创建一个NSUrl,它就知道"data:" - url.

NSURL *url = [NSURL URLWithString:base64String];    
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *ret = [UIImage imageWithData:imageData];

正如评论中所提到的,您必须确保使用前置数据,data:image/png;base64,否则您的base64数据将毫无用处.


是啊!这太超级了!也许值得一提的是,你必须在实际的原始base64字符串前面添加"data:image/png; base64"才能使其正常工作.我从阅读OP发布的WebView/HMLT代码中推断出这一点,但是我可以看到一些人可能错过了这种细微差别,然后这就行不通了.
这完全有效,为什么它被投票如此之多?

2> Jonathan M..:

很老的问题,但是从iOS7开始,有一种新的,更简单的方法,因此我在这里写它,以便未来的读者可以使用它.

NSData* data = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
UIImage* image = [UIImage imageWithData:data];

非常容易使用,并且不会达到URL的2048字节大小限制.



3> Thorsten Nie..:

此代码将显示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"中的值来自数据库



4> 小智..:

您可以执行以下操作:

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

然后像这样称呼它:

UIImage *image = [self decodeBase64ToImage:dataString];

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有