如何在iPhone上从UIWebView的HTML引用本地图像文件?

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

我想在我的 UIWebView 的 HTML 中使用

<img src="
temp.jpg
" />

如何引用名为
temp.jpg
的本地文件来节省宝贵的加载时间?

当然,显而易见的选择是

<img src="
.\temp.jpg
" />
但我不知道我的根在哪里......

ios uiwebview
5个回答
9
投票

这将创建一个 URL 对象,其中包含文件在磁盘上的位置。然后,您可以使用它来输出可在

file://
标签内使用的有效
img
URL 字符串。

NSURL* fileURL = [[NSBundle mainBundle] URLForResource:@"temp" withExtension:@"jpg"];

NSLog(@"<img src=\"%@\" />", fileURL.absoluteString);

4
投票
NSURL *url=[[NSBundle mainBundle] bundleURL];
[webView loadHTMLString:string baseURL:url];

这让根成为应用程序的主包。


2
投票

我一直在寻找解决方案,发现了以下内容
就我而言,工作正常,我有一个本地 HTML 字符串和一个本地图像 我将图像转换为 64 进制

您可以使用此网站将图像转换为base64编码

转换器

并重写 HTML 字符串,在图像标签中包含 base64 图像,如下所示

    <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABmgAwAEAAAAAQAAABkAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIABkAGQMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAkGBxISEhISEhAQFRUXFRUVEhIQDxAQEBUVFRIWFxUVExUYHSggGBolGxUVITEhJSorLi4uFx8zODMtNygtLiv/2wBDAQoKCg4NDhcQEBctHR0dLS0tLS0rLS0rLS0tLTctLS0tLS4tLS0tLS0tLS0uKy0tLS0tLS0vLSstLS0tLS0rLS3/3QAEAAT/2gAMAwEAAhEDEQA/APTbvxzYRSPE85DoxR18qU4YYyMgc9R0rN1YJ2bO2ll2IqxUoRun5ohPxBsO0sh/3bec/wDstQ8TT7/gdCyXGP7K/wDAo/5iR+PrRnjjQTku6ICYSiguwUElscc0LERbsipZLiYxlKVkkm977a9Dq63PIP/Q6bWbLSftc/nzxLNvLOjXZjJyqnlQeDjHHoRWUqMJO7O+jmWIoxUYSVl5JlOW50RHQLNYsn/LQteM5Xn0zWboJSVo3XU0eb4t/wDLy3okizaeJ9CjlRYRCzl0VWitmcBmkVVzIRgckd62jShHZHPUzDE1FadWTXa56dVnIf/R6/xH8J7W9upbqS4ulaRlYpE0SoCsapwSpPRB3oASD4Pacv3nvG+t0y/+ggUAalh8NNMiIYWxYgggzTTS8g5BwzYzkCgDrsUAf//S9xoAKACgAoA//9k=" alt="Red dot" >

要测试结果,请输入以下在线 HTML 编辑器

W3学校

希望它对其他人有帮助,或者可能得到更好的解决方案,祝你好运


0
投票

我不知道我的根在哪里...

UIWebView
查找与您加载的 HTML 文件相关的文件。所以也许这将是您的应用程序包。


0
投票

另一种选择是在 swift 代码中从本地文件构造一个 base64image 字符串,并将该字符串传递给您的 webview。您可以通过直接将这些 Base 64 字符串传递给 img html 标签来呈现它们。在我的用例中,我需要创建一个文档类型为 html 的 HTML attributeString...这可以在实际的 UILabel 中渲染图像...我将在此处发布一些示例代码,您可能需要使用它,你只需将字符串传递给你的网络视图 -

let base64EncodedImage = UIImage.init(named: “my_image”).jpegData(compressionQuality: .leastNonzeroMagnitude)?.base64EncodedString()

let htmlString: String = "<div style='font-size:15px;display:inline;'> <b>hello internet</b> <img src='data:image/jpg;base64,\(base64image)' /> </div>"

let attributedText = try? NSMutableAttributedString(
            data: data,
            options: [.documentType: NSAttributedString.DocumentType.html,
                      .characterEncoding: String.Encoding.utf8.rawValue],
            documentAttributes: nil
)

let label: UILabel = .init()

label.attributedText = attributedText
© www.soinside.com 2019 - 2024. All rights reserved.