gpt4 book ai didi

ios - imageWithcontentsOfFile 无法从模拟器缓存目录加载保存的图像

转载 作者:行者123 更新时间:2023-11-29 00:37:23 24 4
gpt4 key购买 nike

我正在使用

将图像写入模拟器缓存目录
NSURL *cacheDir = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory 
inDomains:NSUserDomainMask].lastObject;
NSURL *avatarFileURL = [cacheDir URLByAppendingPathComponent:@"test.png" isDirectory:NO];
NSData *imageData = UIImagePNGRepresentation(avatarImage);
[imageData writeToURL:avatarFileURL atomically:YES];

这工作正常,我通过记录 avatarFile url 并将其加载到显示缓存图像的浏览器来验证图像。

然后我尝试读取测试图像,如果我使用 imageWithContentsOfFile:imageWithData: 会得到不同的结果,如下所示:

NSURL *cacheDir = [[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory 
inDomains:NSUserDomainMask].lastObject;
NSURL *avatarFileURL = [cacheDir URLByAppendingPathComponent:@"test.png" isDirectory:NO];
// Returns a nil.
NSString *avatarFile = avatarFileUrl.absoluteString;
UIImage *image1 = [UIImage imageWithContentsOfFile:avatarFile];

// Returns the image.
NSData *imageData = [NSData dataWithContentsOfURL:avatarFileUrl];
UIImage *image2 = [UIImage imageWithData:imageData];

我无法解释为什么 imageWithContentsOfFile 失败而 imageWithData 在它们都寻址相同的 URL 时起作用。我已经通过记录 URL 来验证它,并且 url 完全相同。

有人知道为什么 imageWithContentsOfFile 不起作用吗?

最佳答案

您的问题与此行有关:

NSString *avatarFile = avatarFileUrl.absoluteString;

查看avatarFile 的值。它类似于 file:///....imageWithContentsOfFile: 需要正确的文件路径,而不是文件 URL。

您需要将文件 URL 正确转换为路径。这是按如下方式完成的:

NSString *avatarFile = avatarFileUrl.path;

关于ios - imageWithcontentsOfFile 无法从模拟器缓存目录加载保存的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com