Swift 将从用户照片中收集的 UIImage 引用到 Dict 中
Swift referencing UIImage gathered from Users photos into a Dict
我在故事板中有一个页面,用户可以在其中更改他们的昵称和用户图标。
用户,用户名是预定义的,我将其与 NSUserDefaults 一起使用以存储有关该用户的最少信息;
UserData['UserID'] = ["Nickname":"Johnny English", "UsersProfile": "abc123"]
我使用 UIImagePickerController 加载一个用户可以修改昵称和个人资料图片的页面 我可以在用户库中找到一张图片,然后替换包含新个人资料的页面。
但我无法找到一种方法来引用 iOS 目录中的图像或将图像移动到应用程序内部并以这种方式引用它。
到目前为止我有:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
UserIconImageView.contentMode = .ScaleAspectFit
UserIconImageView.image = pickedImage
// Add the UsersProfile to the UsersProfile entry for this User
//detailsOfUser["CustomImage"] = pickedImage
// Change the 'Done' button to a 'Save'
self.completeButton.title = "Save"
}
dismissViewControllerAnimated(true, completion: nil)
}
这里进行的最佳方式是什么?
引用图像还是将其移动到应用程序内更好?如果是怎么办?
detailsOfUser["CustomImage"] = does a url / referencing string go here?
最近我遇到了类似的问题。我发现的所有答案都说无法获得 UIImagePickerController 选择的此图像的引用,我的解决方案是:
首先,我找到了所选图片的本地Documents文件夹路径:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let docsFileHandler: FileManager = FileManager.init()
let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
然后,我拍了一张选定的照片,它的名字加上扩展名:
let imageFromPicker = info[UIImagePickerControllerOriginalImage]!
var imageID = (info[UIImagePickerControllerReferenceURL] as! NSURL).absoluteString as NSString
let imageExt = (info[UIImagePickerControllerReferenceURL] as! NSURL).lastPathComponent! as NSString
下一步,我从资产库中找到了图片名称。我使用了带有 ID 和扩展名的部分,但您可以将其保存为用户名等。我已将图片的新名称添加到文档文件夹路径中。
let startRangeName = imageID.rangeOfString("id=")
let endRangeName = imageID.rangeOfString("&")
let idRange = NSMakeRange(startRangeName.location + startRangeName.length, endRangeName.location - startRangeName.location - endRangeName.length - startRangeName.length)
imageID = imageID.substringWithRange(idRange)
var writePathForFile = (documentDirectoryPath as NSString).stringByAppendingPathComponent(imageID as String)
writePathForFile.appendContentsOf(imageExt as String)
最后一步是将所选图片保存到创建名称的 Documents 文件夹中:
let imageDataFromPicker = UIImagePNGRepresentation(imageFromPicker as! UIImage)
imageDataFromPicker?.writeToFile(writePathForFile, atomically: true)
在这一点上,您可以为您的 detailsOfUser["CustomImage"]
使用 writePathForFile
我在故事板中有一个页面,用户可以在其中更改他们的昵称和用户图标。 用户,用户名是预定义的,我将其与 NSUserDefaults 一起使用以存储有关该用户的最少信息;
UserData['UserID'] = ["Nickname":"Johnny English", "UsersProfile": "abc123"]
我使用 UIImagePickerController 加载一个用户可以修改昵称和个人资料图片的页面 我可以在用户库中找到一张图片,然后替换包含新个人资料的页面。
但我无法找到一种方法来引用 iOS 目录中的图像或将图像移动到应用程序内部并以这种方式引用它。
到目前为止我有:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
UserIconImageView.contentMode = .ScaleAspectFit
UserIconImageView.image = pickedImage
// Add the UsersProfile to the UsersProfile entry for this User
//detailsOfUser["CustomImage"] = pickedImage
// Change the 'Done' button to a 'Save'
self.completeButton.title = "Save"
}
dismissViewControllerAnimated(true, completion: nil)
}
这里进行的最佳方式是什么? 引用图像还是将其移动到应用程序内更好?如果是怎么办?
detailsOfUser["CustomImage"] = does a url / referencing string go here?
最近我遇到了类似的问题。我发现的所有答案都说无法获得 UIImagePickerController 选择的此图像的引用,我的解决方案是:
首先,我找到了所选图片的本地Documents文件夹路径:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let docsFileHandler: FileManager = FileManager.init()
let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
然后,我拍了一张选定的照片,它的名字加上扩展名:
let imageFromPicker = info[UIImagePickerControllerOriginalImage]!
var imageID = (info[UIImagePickerControllerReferenceURL] as! NSURL).absoluteString as NSString
let imageExt = (info[UIImagePickerControllerReferenceURL] as! NSURL).lastPathComponent! as NSString
下一步,我从资产库中找到了图片名称。我使用了带有 ID 和扩展名的部分,但您可以将其保存为用户名等。我已将图片的新名称添加到文档文件夹路径中。
let startRangeName = imageID.rangeOfString("id=")
let endRangeName = imageID.rangeOfString("&")
let idRange = NSMakeRange(startRangeName.location + startRangeName.length, endRangeName.location - startRangeName.location - endRangeName.length - startRangeName.length)
imageID = imageID.substringWithRange(idRange)
var writePathForFile = (documentDirectoryPath as NSString).stringByAppendingPathComponent(imageID as String)
writePathForFile.appendContentsOf(imageExt as String)
最后一步是将所选图片保存到创建名称的 Documents 文件夹中:
let imageDataFromPicker = UIImagePNGRepresentation(imageFromPicker as! UIImage)
imageDataFromPicker?.writeToFile(writePathForFile, atomically: true)
在这一点上,您可以为您的 detailsOfUser["CustomImage"]
使用 writePathForFile