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