使用nsdata在<img/>标记中显示图像

时间:2011-09-26 10:22:39

标签: iphone objective-c ios xcode uiwebview

这可能吗?我的应用程序将从服务器下载一个zip文件,我将所有图像保存在这样的数组中:

    ZipReadStream *read = [unzipFile readCurrentFileInZip];
    NSMutableData *data = [[NSMutableData alloc] initWithLength:info.length];
    int bytesRead= [read readDataWithBuffer:data];

    if(bytesRead > 0)
    {
     [imagesData addObject:data];
     [imagesName addObject:info.name];
    }

然后我过滤w / c图像显示在uiview内部,w / c图像显示在uiwebview内。我在uiview中显示图像,如下所示:

    UIImage *imageForThisQuestion = [[UIImage alloc]initWithData:[imagesData       
    objectAtIndex:indexOfThisImage]];

这在uiview中运行良好。但是如何在uiwebview中显示一些图像呢?我可以在这里使用标签吗?我的uiwebview也可能以这种格式出现:

    "blah blah blah blah <img src...> blah blah blah <img src...>"

3 个答案:

答案 0 :(得分:6)

您不希望将文件保存在文件中以在html中引用它,例如&lt; img src =“myimage.png”&gt ;,对吧?您可以使用data URI scheme将图片编码为URI,并使用img标签,例如

&LT; img src =“data:image / png; base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4 // 8 / w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg ==“&gt;

阅读hear如何对图像的NSData进行base64编码。

答案 1 :(得分:0)

对于想要快速清晰回答并阅读上面提供的整篇文章的人来说,这是您要使用的代码:

NSString* imgInBase64 = [imageObject base64EncodedStringWithOptions:0];
NSString* imgSrcValue = [@"data:image/png;base64," stringByAppendingString:imgInBase64]

并将该字符串注入任何<img src="{{imgSrcValue}}">元素。注意base64EncodedStringWithOptions的0值可以帮助您避免与产生巨大Base64字符串的图像发生崩溃。您还可以将png更改为任何支持的图像格式

答案 2 :(得分:-1)

您必须使用正确的baseURL

加载HTML代码
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

然后,在您的HTML代码中:

<img src="myimage.png">