0
我正在嘗試保存UIImage,但它給了我一個錯誤。 UIImage是從UIImagePickerController中挑選出來的,然後通過製作一個NSData
並在此NSData
對象上調用writeToFile:
來保存。 這樣做,我會得到一個錯誤。相同的方法完美地存儲其他圖像。我沒有問題存儲的圖像從網站檢索爲字節數組,然後轉換爲UIImage,然後保存。 看來,這個問題是專門爲UIImagePickerController
圖像。寫入文件時ImageIO錯誤
有人可以告訴我如何解決這個問題嗎?
這似乎從UIImagePickerController
圖像保存很好,但我仍然得到這個錯誤,導致應用程序崩潰:五月
1 10時38分05秒的Simon-BS-iPhone Diims [619] :ImageIO的:JPEG 損壞JPEG數據:數據段的過早結束
這是用於保存圖像的代碼:
+ (void)storeImage:(UIImage *)image name:(NSString *)name
{
NSString *pathForCache = [self pathForCache];
NSData *imageData = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];
NSString *jpegPath = [pathForCache stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg", name]];
NSError *error;
if ([imageData writeToFile:jpegPath options:NSDataWritingAtomic error:&error] == NO)
{
DLog(@"Could not save image: %@", jpegPath);
DLog(@"%@", error);
}
}
它被稱爲像這樣被選中的圖像時:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
// Close controller
[picker dismissModalViewControllerAnimated:YES];
// Save image
self.selectedDevice.image = image;
[CDeviceManager localUpdateDevice:self.selectedDevice delegate:self];
}
試着改變你的代碼如下,如果它的工作原理: - - (空)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { //保存圖像 self.selectedDevice.image = image; [CDeviceManager localUpdateDevice:self.selectedDevice delegate:self]; //關閉控制器 [picker dismissModalViewControllerAnimated:YES]; } //保存圖像後關閉 –
這似乎是個竅門。非常感謝你。你能否給你的評論一個答案? – simonbs
嗨SimonBS,我發佈了相同的答案。 –