如何在 ios 中将 NSString 数据转换为 Uiimage 视图
Posted
技术标签:
【中文标题】如何在 ios 中将 NSString 数据转换为 Uiimage 视图【英文标题】:How to converting NSString Data to Uiimage view in ios 【发布时间】:2014-04-04 07:10:15 【问题描述】:我有一个网址:http://192.168.3.178:8090/SaveDollar/rest/deals/dealimages
我正在尝试从 URL 获取图像。
我尝试了什么:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
NSMutableArray *al=[NSJSONSerialization JSONObjectWithData:webData options:0 error:nil];
NSLog(@"all NSMutable2");
for (NSDictionary *diction in al)
Name.text=[diction valueForKey:@"dealImage"];
NSString* str = Name.text;
NSLog(@"%@dataImage is ",str);
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSUInteger len = data.length;
uint8_t *bytes = (uint8_t *)[data bytes];
NSMutableString *result = [NSMutableString stringWithCapacity:len * 3];
[result appendString:@"["];
for (NSUInteger i = 0; i < len; i++)
if (i)
[result appendString:@","];
[result appendFormat:@"%d", bytes[i]];
[result appendString:@"]"];
NSLog(@"result%@",result);
NSLog(@"uint8_t%s",bytes);
NSMutableData *newData = [NSMutableData new];
NSScanner *theScanner = [NSScanner scannerWithString: result];
theScanner.charactersToBeSkipped = [NSCharacterSet characterSetWithCharactersInString:@"[],"];
while ([theScanner isAtEnd] == NO)
int a;
[theScanner scanInt:&a];
uint8_t b = a;
[newData appendBytes:(const void *)&b length:1];
UIImage *newImage = [UIImage imageWithData:newData];
UIImageView *imageView=[[UIImageView alloc] initWithImage:newImage];
imageView.frame = CGRectMake(0, 25 , 400,150);
[self.view addSubview:imageView];
首先我将 String 转换为 NSdata,然后将 NSData 转换为 Byte 数据 其次,我将字节数据转换为 NSdata,然后将 NSdata 传递给 UIImage
我的问题: 图像未显示但数据库有图像 所以请给我关于我的问题的任何想法
JSON FormatViewer 像这样:
JSON
0
dealImageId : 1
dealImage : "WjQyNDAzMTM2Mzk2NTMxMzE="
dealId : 2
createdDate : 1393871400000
modifiedDate : 1399314600000
createdUserId : 2
modifiedUserId : 4
dealPosted
deleted : true
1
dealImageId : 3
dealImage : "5mQ4ZmZlMTdkY2E0NTc4Njk2NjAwMDA0OTQ5MmEwMDA4MDAwMDAwMGUwMDBlMDEwMjAwMWUwMDAwMDBiNjAwMDAwMDBmMDEwMjAwMTAwMDAwMDBkNDAwMDAwMDEwMDEwMjAwMGEwMDAwMDBlNDAwMDAwMDEyMDEwMzAwMDEwMDAwMDAwMTAwMDAwMDIwMjgyZTJlMmUyOQ=="
dealId : 1
createdDate : 1391365800000
modifiedDate : 1391365800000
createdUserId : 1
modifiedUserId : 2
dealPosted
deleted : false
【问题讨论】:
显示来自您的 Web 服务的示例结果。记录webData
和al
。
请添加一些注销,至少部分图像数据
你从那个 URL 得到了什么?是JPEG吗?请参阅 UIImage 类的 imageWithData: 方法,这可能是相关的。
@Wain 感谢您的回复,但是当我点击 url 时,我尝试在 Url 上获取图像,它显示字符串格式,所以我尝试将 NSString 转换为 NSdata,然后将 NSdata 转换为字节数据,然后将字节数据转换为 NSData最后 NSdata 传递给 UIImageView
我明白你在做什么,它不会改变查看实际返回什么数据的需要......
【参考方案1】:
问题是您的网址错误。将 url 复制并粘贴到浏览器中应该会显示图像。一旦你有了一个有效的图片 URL,你就可以用这个方法轻松地显示它:
NSURL *url=[NSURL URLWithString:[NSString stringwithFormat:@"VALID IMAGE URL"]];
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
例如,尝试使用不同的图像 url 您的代码。
【讨论】:
感谢回复我的图片 格式如下: dealImage : "WjQyNDAzMTM2Mzk2NTMxMzE=" 没有这样的图像格式,您尝试从中获取图像的完整 url 是什么?如我的回答所述,发布一个 URL,当直接复制到 Web 浏览器时将显示图像。或者您是否正在尝试加载本地存储的图像?像在同一个网络?因为您发布的地址以 192.168.3.178 开头,这意味着存储在您的网络中。如果您尝试从您托管的数据库中获取它,则需要公共地址来检索它。此外,您发布的地址以目录路径结尾,而不是文件。【参考方案2】:试试这个。
yourimg.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"Your Image URL"]]];
【讨论】:
@indaiarmy 感谢回复我的图片 格式如下: dealImage : "WjQyNDAzMTM2Mzk2NTMxMzE=" @user3488098 无论格式是什么,您都必须使用特定的 url 并将其放在上面的代码中。【参考方案3】:要显示来自 base64 字符串的图像,您应该这样尝试:
NSURL *URL = [NSURL URLWithString:
[NSString stringWithFormat:@"data:application/octet-stream;base64,%@", yourBase64String]];
dealImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:URL]];
编辑:
如果您需要更多相关信息,请查看以下链接:
base64-decoding-in-ios-7
how-to-decode-base64-encoded-png-using-objective-c
【讨论】:
【参考方案4】:尝试AFNetworking 中的 setImageWithURL: 函数。指定的网址应该是图片的直接链接。
[YourImageView setImageWithURL:@"Url"];
指定的网址应该是图片的直接链接。
【讨论】:
感谢回复我的图片 格式如下: dealImage : "WjQyNDAzMTM2Mzk2NTMxMzE=" –以上是关于如何在 ios 中将 NSString 数据转换为 Uiimage 视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中将 NSData 变量转换为 NSInteger 变量
如何在目标 c 中将 NSString 转换为 NSDictionary?