Это мое последнее сообщение об ошибке перед отправкой приложения в Apple (надеюсь), и это сводит меня с ума. При сохранении изображения в моем телефоне, он повреждает файл. При попытке открыть файл выдает ошибку Corrupt JPEG data: premature end of data segment
и вылетает.
Вот мой код для сохранения изображения:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
[picker.parentViewController dismissModalViewControllerAnimated:NO];
uploadImage = image;
int orient = uploadImage.imageOrientation;
NSString *theOrientation = [NSString stringWithFormat: @"%d", orient];
NSString *latestIDQuery = @"";
NSArray *results = [database executeQuery:@"SELECT * FROM processes ORDER BY id DESC LIMIT 0,1"];
for (NSDictionary *row in results) {
latestIDQuery = [row valueForKey:@"id"];
}
int latestID = [latestIDQuery intValue];
int newID = latestID + 1;
NSString *newIDString = [[NSString alloc] initWithFormat:@"%d", newID];
NSString *imageURL = [NSString stringWithFormat:@"Documents/%@_process.jpg",newIDString];
NSLog(@"Saving here... %@", imageURL);
NSString *uploadImagePath = [NSString stringWithFormat:@"%@_process.jpg",newIDString];
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:imageURL];
NSLog(@"Needs to write something like this: %@", jpgPath);
[UIImageJPEGRepresentation(uploadImage, 1.0) writeToFile:jpgPath atomically:YES];
[database executeNonQuery:@"INSERT INTO processes (image, album, status, orient, ready) VALUES (?, ?, ' In Queue', ?, 'no');", uploadImagePath, selectedID, theOrientation];
TableViewAppDelegate *dataCeter = (TableViewAppDelegate *)[[UIApplication sharedApplication] delegate];
dataCeter.dataSix = nil;
NSString *databaseURL = [NSString stringWithFormat:@"%@_process.jpg",newIDString];
dataCeter.dataSix = databaseURL;
[self showCaption];
}
Есть ли лучший способ сохранения изображений, чтобы они не испортились? Кроме того, как вы можете проверить, что изображение повреждено, чтобы оно больше никогда не падало? Я слышал, что imageData должен начинаться с FF d8 и заканчиваться d9 ff .. как-то так.
Спасибо
Колтон