【问题标题】:iOS - UIWebView loading an image located in the tmp folderiOS - UIWebView 加载位于 tmp 文件夹中的图像
【发布时间】:2023-04-02 22:34:01
【问题描述】:

我在应用程序的临时文件夹中保存了一个图像文件,例如 IMG.png。我正在使用以下方法将 HTML 字符串注入 UIWebView:

    NSString *HTML = [NSString stringWithFormat:
                     @"<body><h2>%@</h2><img src=\"%@\"></img><p>%@</p>%@</body>",
                     title, image, body];

    [webView loadHTMLString:HTML baseURL:[NSURL URLWithString:HOST]];

我为 NSString image 尝试了多种路径组合,但我无法让这个 WebView 正确加载我的本地图像。

你能帮帮我吗?

这是我用来将图像保存在临时文件夹中的内容:

[self saveImage:result withFileName:post.title ofType:@"jpg" inDirectory:NSTemporaryDirectory()];

依赖于:

-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {

    if ([[extension lowercaseString] isEqualToString:@"png"]) {
        [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
    } else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
        [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
    } else {
        NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
    }
}

【问题讨论】:

  • 几件事:不要在调用“writeToFile”时执行“error: nil”,而是应该检查该函数是否返回“TRUE”,如果没有,请打印输出错误参数中返回的值。其次,您应该展示传递给该 HTML 字符串的“image”路径的示例。
  • 文件正在正确写入,我已经检查了模拟器文件夹,所以我看不到任何错误。其次,“图像”值就是我要的!
  • 文件总是同名还是可以是不同的名字?构成 HTML 字符串的对象是否与将图像保存到文件的对象相同?我问的原因是因为我们可以将图像路径或文件名设为对象 ivar。
  • 文件名可以不同。另一方面,构成 HTML 的对象与保存图像的对象相同

标签: ios image uiwebview


【解决方案1】:
     [webView loadHTMLString:HTML baseURL:[NSURL URLWithString:HOST]]; //the 'HOST' must be your application's temp folder

【讨论】:

    【解决方案2】:

    尝试使用 NSURL 组合文件 URL:

    NSURL *url = [NSURL fileURLWithPath:[[NSTemporaryDirectory() stringByAppendingPathComponent:@"filename"] stringByAppendingPathExtension:@"jpg"]];
    NSString *image = [url absoluteString];
    

    (假设您的图像文件名为“filename.jpg”)

    应该是这样的:

    file://localhost/private/var/mobile/Applications/E754629C-4163-4829-9D10-89D55A61264E/tmp/filename.jpg
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 2019-02-10
      • 2015-09-12
      • 2015-12-07
      • 1970-01-01
      • 2019-09-13
      • 2012-12-08
      • 1970-01-01
      相关资源
      最近更新 更多