【发布时间】:2018-03-23 08:10:29
【问题描述】:
我正在尝试在 Objective-C 中将 base 64 图像插入 UIImage 我执行以下操作:
我已经把用户的图片变成了一个 NSURL
NSURL *url = [NSURL URLWithString: [fetchDefaults objectForKey:@"img"]];
然后我将 url 转换为 NSString
NSString *string=[NSString stringWithFormat:@"%@",url];
然后我清理字符串,并添加前缀“data:application/octet-stream;base64”,也尝试使用“data:image/jpg;base64”
NSMutableString *tempStr = [NSMutableString stringWithString:string];
[tempStr replaceOccurrencesOfString:@" " withString:@"+" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [tempStr length])];
NSString *temp = [[NSString stringWithFormat:@"data:application/octet-stream;base64,%@",tempStr] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
最后将字符串转换为 NSData 以插入到 UImage 中
NSData *dat = [[NSData alloc]initWithBase64EncodedString:temp options:NSDataBase64DecodingIgnoreUnknownCharacters];
[avatar setImage:[UIImage imageWithData:dat]];
尽管 dat 的值不为零,但当我将图像设置为 UIImage 时,图像没有显示,知道我在做什么错吗?
【问题讨论】:
-
Then I cast the url, into a NSString,这不是演员表,你应该使用NSString *string= [url absoluteString];,不是吗?而你所做的根本没有任何意义。为什么添加@"data:application/octet-stream;base64,%@"应该使其成为 UIImage?与 URL 发生了什么?你能给我们[fetchDefaults objectForKey:@"img"]的值吗?如果它是一个 URL(真的),那么你需要下载它是有道理的。 -
in
fetchDefaults我有一个类似iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAq1BMVEX///8ARIvvhhs7cKb7/P3G0uIAQooERo0PTpG9zN5Meanl6fHN2+n//vyYs9Dy9fn+ ... TkSuQmCC´ this string I need to add@"data:application/octet-stream;base64,%@"´ 的字符串来表示这是一个 base 64 字符串,那么我需要添加到 UIImageView 但我不知道我这样做是否正确。 -
"我需要添加@"data:application/octet-stream;base64,%@"´" 为什么?不是特别的。如果它已经正确完成,则不必这样做。
标签: ios objective-c iphone uiimageview base64