如何从UIImage中获取URL

7

如何从UIImage获取URL?我从iPhone库中获取了一张图片并将其调整大小,但我不想保存新图片,而是想获取它的URL。


你可能需要更详细地说明你想要什么,你是在请求图像的新路径、旧路径还是其他内容。与UIImage相关联的唯一URL是指向其在磁盘上存在的文件系统URL。 - Bergasms
4个回答

17

你说你不想保存它,但如果你需要一个UIImage的URL,你可以轻松保存一个临时副本以获取所需的URL。

对于较新的Swift 5:

// Create a URL in the /tmp directory
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else {
    return
}

let pngData = image.pngData();
do {
    try pngData?.write(to: imageURL);
} catch { }

现在您可以使用URL将图像分享到社交媒体或其他需要的地方。

对于之前的Swift版本:

// Create a URL in the /tmp directory
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else {
    return
}

// save image to URL
do {
    try UIImagePNGRepresentation(myImage)?.write(to: imageURL)
} catch { }

更多信息请查看这里


9

UIImage没有URL或文件信息,只是一个表示像素颜色数据的字节集合。如果您从UIImagePicker获取UIImage,则可以在资源库中获取原始图像的URL。但必须在图像选择器委托方法中获取此URL,并且必须将其与UIImage对象分开跟踪。

编辑-根据OP的评论,这不是所请求的信息。


2
那么如果我想获取URL,我必须将其保存在某个地方,然后才能获取URL吗? - Shubham Sharma
你的问题还是比较模糊的。你在谈论一个URL指向被编辑或调整大小的图像。如果你只是使用UIImage来处理这个过程,那么这个新图像就没有URL了,它只存在于内存中。 - rmaddy
UIImage可以在内存中创建。在这种情况下,没有文件和URL。如果您的UIImage来自加载文件,则需要在加载图像时获取文件的URL。 - rmaddy
1
但是你能告诉我获取内存中图像的URL的替代解决方案吗? - Shubham Sharma
1
你刚才说你明白我的意思了。内存中的UIImage对象没有URL,也就是说没有URL可以获取。我不确定该怎么再说了。除非将UIImage保存到文件中,否则它是没有URL的。 - rmaddy

4
您需要查找的是委托回调中信息字典提供的UIImagePickerControllerReferenceURL参数。您需要执行以下操作:
NSURL* imageURL = [info objectForKey:UIImagePickerControllerReferenceURL];

而它会看起来像这样:

assets-library://asset/asset.JPG?id=SOME_GUUID&ext=JPG

你可以使用后者来引用回调函数中得到的UIImage*对象包含的相同图像。

2
你可以创建一个UIImage的子类,并重写initWithURL:方法,将URL保存到一个新的属性中...就像这样。
+ (id) initWithURL:(NSURL*)url
{
    [super initWithURL:url];
    self.url = url;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接