0

我有一个 iPad 应用程序(XCode 4.6、iOS 6.2、CoreData、ARC 和 Storyboards)。在 CoreData 存储中,我有一张图片。

我已将图像写入 iPad 上的 tmp 目录。这是代码:

    //  create a temporary file to hold the image
NSString *tmpDir = NSTemporaryDirectory();
UIImage *custImage = [UIImage imageWithData:client.aClientImage];  //  get the image
[UIImagePNGRepresentation(custImage) writeToFile:tmpDir atomically:YES];  //  write the image to tmp/file

// Create file manager
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSLog(@"\n\ntmp directory: %@", [fileMgr contentsOfDirectoryAtPath:tmpDir error:&error]);

NSLog 什么也没显示!

我有一个 UIPopover,我在其中显示一些包含图像的数据。我能够从我的 CoreData 存储中获取图像,但在我的 HTML 中,它没有显示出来。这是我的 HTML:

    NSString *htmlString = [NSString stringWithFormat:NSLocalizedString(@"<html> \n"
                        "<head> \n"
                        "<style type=\"text/css\"> \n"
                        "body {font-family: \"Verdana\"; font-size: 12;}\n"  //  font family and font size here
                        "</style> \n"
                        "</head> \n"
                        "<body><h2>%@ %@</h2>"
                        "<p>email: %@<p>phone: %@<p>services: %@<p><img src=\"%@\"/>"  
                        "</body> \n"
                        "</html>",nil),
                        client.aClientFirstName,
                        client.aClientLastName,
                        client.aClientEMail,
                        client.aClientPrimaryPhone,
                        appt.aServices,
                        @"tmpDir/custImage"];

知道为什么图像没有显示吗?

4

1 回答 1

2

问题是您正在尝试使用一个<img>元素,但您正在使用可转换的 Core Data 属性的值填充其src属性。它们的工作方式不同 -img需要一个指向图像的 URL,并且您的属性提供一个UIImage.

最直接的处理方法是将图像写入文件,然后将img标记指向该文件。

你也可以通过使用类似的东西<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAAD..."而不是你拥有的东西来完成这项工作,假设你可以得到正确的格式。您可能想要原始的未转换NSData对象而不是UIImage. 这可能需要做更多的工作,但可以避免编写临时图像文件。

于 2013-06-17T23:48:10.657 回答