由于图像文件大小,解析无法上传图像
Parse unable to upload images due to image file size
我在将图像上传到 Parse 时遇到问题。我认为问题可能与图像文件大小有关,但根据此 link
https://parse.com/questions/file-size-limit-in-uploads
每个文件最大可达 10MB。我可以成功上传 2 张图片,其中每张图片为 1.7MB,但是一旦我尝试上传 2 张大于 2MB 的图片,调用就会永远停止。该应用程序不会崩溃,它只会无限期地加载,即使在等待 5 分钟以加载图像后也是如此。 "Post" 对象保存良好,但未保存图像。
我在下面包含了用于上传要解析的图像的相关代码。有人可以让我知道我做错了什么吗?这是否与我将图像保存到名为 "Images" 的 class,然后将该 PFObject 与其他图像一起保存在列表中,然后将该图像列表保存为"Post" class?我希望能够直接访问与此 post 关联的图像,而无需进行额外的 API 调用来检索与 post 关联的图像。如果有任何不清楚的地方,请告诉我。
var post = PFObject(className: "Post")
post["caption"] = captionTextField.text
post["user"] = PFUser.currentUser()
post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
if success == false {
println("failed 1")
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
} else {
let imageOneData = UIImagePNGRepresentation(self.imageOne)
let imageOneFile = PFFile(name: "imageOne.png", data: imageOneData)
let imageTwoData = UIImagePNGRepresentation(self.imageTwo)
let imageTwoFile = PFFile(name: "imageTwo.png", data: imageTwoData)
var images: [PFFile] = [imageOneFile, imageTwoFile]
var finishedUploads = 0
var listOfImages : [PFObject] = []
for var i = 0; i < images.count; i++ {
var postImage = PFObject(className: "Images")
postImage["image"] = images[i]
postImage["postId"] = post.objectId
postImage["likes"] = 0
postImage.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
finishedUploads++
if success == false {
println("failed 3")
} else {
println("success 3")
println(postImage.objectId)
listOfImages.append(postImage)
if finishedUploads == images.count {
post["listOfImages"] = listOfImages
post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
if success == false {
println("failed 10")
} else {
println("success 10")
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let tabViewController = storyboard.instantiateViewControllerWithIdentifier("Home") as? UINavigationController {
self.presentViewController(tabViewController, animated: true, completion: nil)
} else {
println("What should I do here?")
}
}
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
}
}
}
}
}
}
}
问题是我如何表示图像数据。应该是
let imageOneData = UIImageJPEGRepresentation(self.imageOne, 0.5)
不是
let imageOneData = UIImagePNGRepresentation(self.imageOne)
在我使用 UIImagePNGRepresentation 将图像数据上传到 Parse 后,图像文件大小增长到原始大小的 3 倍。我能够使用 UIImageJPEGRepresentation 成功上传更大的图像(如文档所述,最大 10MB)。
我在将图像上传到 Parse 时遇到问题。我认为问题可能与图像文件大小有关,但根据此 link
https://parse.com/questions/file-size-limit-in-uploads
每个文件最大可达 10MB。我可以成功上传 2 张图片,其中每张图片为 1.7MB,但是一旦我尝试上传 2 张大于 2MB 的图片,调用就会永远停止。该应用程序不会崩溃,它只会无限期地加载,即使在等待 5 分钟以加载图像后也是如此。 "Post" 对象保存良好,但未保存图像。
我在下面包含了用于上传要解析的图像的相关代码。有人可以让我知道我做错了什么吗?这是否与我将图像保存到名为 "Images" 的 class,然后将该 PFObject 与其他图像一起保存在列表中,然后将该图像列表保存为"Post" class?我希望能够直接访问与此 post 关联的图像,而无需进行额外的 API 调用来检索与 post 关联的图像。如果有任何不清楚的地方,请告诉我。
var post = PFObject(className: "Post")
post["caption"] = captionTextField.text
post["user"] = PFUser.currentUser()
post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
if success == false {
println("failed 1")
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
} else {
let imageOneData = UIImagePNGRepresentation(self.imageOne)
let imageOneFile = PFFile(name: "imageOne.png", data: imageOneData)
let imageTwoData = UIImagePNGRepresentation(self.imageTwo)
let imageTwoFile = PFFile(name: "imageTwo.png", data: imageTwoData)
var images: [PFFile] = [imageOneFile, imageTwoFile]
var finishedUploads = 0
var listOfImages : [PFObject] = []
for var i = 0; i < images.count; i++ {
var postImage = PFObject(className: "Images")
postImage["image"] = images[i]
postImage["postId"] = post.objectId
postImage["likes"] = 0
postImage.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
finishedUploads++
if success == false {
println("failed 3")
} else {
println("success 3")
println(postImage.objectId)
listOfImages.append(postImage)
if finishedUploads == images.count {
post["listOfImages"] = listOfImages
post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in
if success == false {
println("failed 10")
} else {
println("success 10")
var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
if let tabViewController = storyboard.instantiateViewControllerWithIdentifier("Home") as? UINavigationController {
self.presentViewController(tabViewController, animated: true, completion: nil)
} else {
println("What should I do here?")
}
}
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
}
}
}
}
}
}
}
问题是我如何表示图像数据。应该是
let imageOneData = UIImageJPEGRepresentation(self.imageOne, 0.5)
不是
let imageOneData = UIImagePNGRepresentation(self.imageOne)
在我使用 UIImagePNGRepresentation 将图像数据上传到 Parse 后,图像文件大小增长到原始大小的 3 倍。我能够使用 UIImageJPEGRepresentation 成功上传更大的图像(如文档所述,最大 10MB)。