【问题标题】:How to converting NSString Data to Uiimage view in ios如何在 ios 中将 NSString 数据转换为 Uiimage 视图
【发布时间】: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
  • 我明白你在做什么,它不会改变查看实际返回什么数据的需要......

标签: ios iphone objective-c uiimage


【解决方案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=" –
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2021-03-17
    • 2015-08-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多