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

问题描述 投票:0回答:3

这可能吗?我的应用程序将从服务器下载一个 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];
    }

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

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

这在 uiview 中工作得很好。但如何显示 uiwebview 中的一些图像?我可以在这里使用标签吗?我的 uiwebview 也可能以这种格式出现:

    "blah blah blah blah <img src...> blah blah blah <img src...>"
iphone objective-c ios xcode uiwebview
3个回答
6
投票

您不想将图像保存在文件中以在 html 中引用它,如 < img src="myimage.png">,对吗?您可以使用 data URI 方案 将图像编码为 URI,并使用像

这样的 img 标签

< img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==" >

阅读此处如何对图像的 NSData 进行 Base64 编码。


0
投票

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

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

然后将该字符串注入到任何

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


-1
投票

您必须使用正确的

baseURL
:

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

然后,在您的 HTML 代码中:

<img src="myimage.png">
© www.soinside.com 2019 - 2024. All rights reserved.