将 PFImageView 的图像属性设置为本地图像,然后使用 PFFile 更新 Parse 数据库

Posted

技术标签:

【中文标题】将 PFImageView 的图像属性设置为本地图像,然后使用 PFFile 更新 Parse 数据库【英文标题】:Setting the image property of a PFImageView to a local image, then updating Parse database with the PFFile 【发布时间】:2014-09-04 14:00:31 【问题描述】:

PFImageView 及其.file 属性及其对应的-loadInBackground 方法非常有用。我无法弄清楚如何“走另一条路”,即从新图像中获取 PFFile 参考:

RA_MyAccount.h(摘录)

@property (weak, nonatomic) IBOutlet PFImageView *profilePic;
-(IBAction)saveButtonTapped:(id)sender;

RA_MyAccount.m(摘录)

-(void)setLocalImageToPFImageView:(UIImage *)localImage

    self.profilePic.image = localImage


-(IBAction)saveButtonTapped:(id)sender

    PFUser *cUser = [PFUser currentUser];

    // Get the PFFile reference for the new image
    PFFile *file;
    file = ??? ??? ??? ???

    // Set
    cUser[PF_USER_PIC] = file;

    [cUser saveInBackgroundWithBlock:
     ^(BOOL succeeded, NSError *error)
         [self performSegueWithIdentifier:@"unwindtotabviewsegue" sender:self];
     ];

我已经用??? ??? ??? ??? 指出了我遇到问题的地方。

【问题讨论】:

【参考方案1】:

所以,我有一个答案,但我只是不相信这是最聪明的方法。当我对图像编码一无所知时,我也很担心开始使用像 UIImageJPEGRepresentation 这样的函数(它甚至是一个函数吗?)。

file = [PFFile fileWithData:UIImageJPEGRepresentation(self.profilePic.image, 0.8f)];

【讨论】:

【参考方案2】:

只要您对图像丢失质量没问题(如果是照片应该没问题),那么您想按照以下方式进行操作。 0.8 代表 80% 的压缩质量。

file = [PFFile fileWithData:UIImageJPEGRepresentation(self.profilePic.image, 0.8f)];

如果你不能失去质量,那么按照以下方式进行。

file = [PFFile fileWithData:UIImagePNGRepresentation(self.profilePic.image)];

请参阅this question,了解各种格式的更详细比较。

【讨论】:

以上是关于将 PFImageView 的图像属性设置为本地图像,然后使用 PFFile 更新 Parse 数据库的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 上的 PFImageView 断断续续的滚动

TableView Cell 中的 PFImageView 加载错误的图像

在附加到 PFImageView 之前未加载 PFFile 图像?

PFImageView 问题:无法在表格视图单元格中显示来自 Parse 的图像

iOS10 中的 PFImageView loadInBackground() 问题

PS中如何将图像与边距修改成特定的距离