如何在本地 HTML 中显示保存在文档目录中的图像? iOS

How to show an image saved on Documents Directory inside local HTML? iOS

我的这个应用程序需要在本地存储在网络视图中显示的图像,并在同一个网络视图中再次显示这些存储的图像。

这是我目前所得到的...

    // After download button clicked... Store image from URL locally
    NSURL  *url = [NSURL URLWithString:myURL];
    NSData *urlData = [NSData dataWithContentsOfURL:url];
    if ( urlData )
    {
        NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString  *documentsDirectory = [paths objectAtIndex:0];

        NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"];
        [urlData writeToFile:filePath atomically:YES];
    }

    // Get image path from Documents Directory
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename.png"];

    // Display local html page                 
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"revistasPhotoswipe" ofType:@"html" inDirectory:@"www"]];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [_webView loadRequest:requestObj];

并且在 html 文件中只有一个标签来显示图像

   <html>
   <head></head>
   <body><img src='filename.png' /></body>
   </html>

将文档目录与 App Bundle 和 HTML 文件进行通信的正确方法是什么?另一种方法?

您不能使用 <body><img src='filename.png' /></body>,因为它引用了本地服务器上不存在的对象。您有几个选择:

1. Javascript

页面加载后一毫秒,您应该告诉您的 webview 计算一个 javascript 函数。document["pictureIdFromProgam"].src = searchPic.src; 以及使用 <img src='throw.imgNotSet' id='pictureIdFromProgam'/>

声明您的图像元素

2。字符串操作

另一个(不太理想,但更快)选项是将您的 HTML 文件编码为 NSString 并使用替换或 %@s

插入 img link

插入:

[NSString stringWithFormat:@"<html><blah blah blah/><img src=%@/>",imagePathAsString];

然后您将能够告诉您的 webview 加载包含更新的 web 内容的 nsstring。