如何在本地 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。
我的这个应用程序需要在本地存储在网络视图中显示的图像,并在同一个网络视图中再次显示这些存储的图像。
这是我目前所得到的...
// 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。