Я относительно новый разработчик iOS.Я пытаюсь создать приложение, которое загружает изображения на сервер.Однако, когда я получаю изображение с метаданными, ориентация всегда отключена.Вот код, который я использую:
- (void)getJPEGFromAssetForURL:(NSURL *)url {
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:url
resultBlock: ^(ALAsset *myasset) {
self.rep = [myasset defaultRepresentation];
NSLog(@"getJPEGFromAssetForURL: default asset representation for %@: uti: %@ size: %lld url: %@ orientation: %d scale: %f metadata: %@",
url, [rep UTI], [rep size], [rep url], [rep orientation],
[rep scale], [rep metadata]);
Byte *buf = malloc([rep size]); // will be freed automatically when associated NSData is deallocated
NSError *err = nil;
NSUInteger bytes = [rep getBytes:buf fromOffset:0LL
length:[rep size] error:&err];
if (err || bytes == 0) {
// Are err and bytes == 0 redundant? Doc says 0 return means
// error occurred which presumably means NSError is returned.
NSLog(@"error from getBytes: %@", err);
self.imageJPEG = nil;
return;
}
self.imageJPEG = [NSData dataWithBytesNoCopy:buf length:[rep size]
freeWhenDone:YES]; // YES means free malloc'ed buf that backs this when deallocated
}
failureBlock: ^(NSError *err) {
NSLog(@"can't get asset %@: %@", url, err);
}];
[assetslibrary release];
}
Когда я иду и публикую данные изображения, содержащиеся в переменной imageJPEG, на моем веб-сервере, он сталкивается со всеми нетронутыми метаданными, но изображение ориентировано неправильно.
Я также попробовал следующее с тем же результатом:
UIImage *largeimage = [UIImage imageWithCGImage:iref scale:1.0 orientation:[rep orientation]];
NSData *webData = UIImageJPEGRepresentation(largeimage,0.5);
Есть ли что-то, что я здесь упускаю, или это ошибка в способе хранения изображений.Пожалуйста, дайте мне знать, если вы можете помочь в любом случае, я очень рад вывести это приложение.
Большое спасибо.