如何从UIImage获取文件路径?

Mir*_*318 11 path objective-c uiimage ios

通常它是相反的方式,您使用路径来显示图像.我想知道如果你已经拥有图像,是否可以获得路径.

Joe*_*mer 21

如果您已经拥有该图像,即已将文件添加到您的资源,您可以使用它来获取文件路径;

NSString *string = [[NSBundle mainBundle] pathForResource:@"IMAGE_FILE_NAME" ofType:@"jpg"]; // or ofType:@"png", etc.
Run Code Online (Sandbox Code Playgroud)


Bri*_*njs 13

我不相信有可能直接从UIImage获取它.

最好的方法是将图像保存在目录中,然后您将拥有文件路径.

//image is your UIImage;

if (image != nil)
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* path = [documentsDirectory stringByAppendingPathComponent:
                      @"test.png" ];
    NSData* data = UIImagePNGRepresentation(image);
    [data writeToFile:path atomically:YES];
}
Run Code Online (Sandbox Code Playgroud)

path 将是你的文件路径.


Hol*_*lly 8

创建UIImage后,图像数据将加载到内存中,不再连接到磁盘上的文件.因此,可以删除或修改文件而不会影响UIImage,并且无法从UIImage获取源路径.

  • 然而,[官方文档](https://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html)指的是"你试图绘制其数据的图像已被清除,图像对象自动从其原始文件重新加载数据." ("图像和内存管理").可能存在允许访问文件的私有API(如果没有文件备份对象数据,则为"nil").任何线索? (2认同)