如何在 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 服务的示例结果。记录webDataal 请添加一些注销,至少部分图像数据 你从那个 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中将nsstring转换为double值时出错

如何在 iOS 中将 NSData 变量转换为 NSInteger 变量

如何在目标 c 中将 NSString 转换为 NSDictionary?

如何在IOS中将视频文件转换为Base64字符串?

如何在iOS中将字符串转换为xml? (目标 C,xcode 7.2)

ios:如何将 html 数据转换为 nsstring?