В настоящее время я получаю фотографию, когда пользователь делает снимок:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = info[UIImagePickerControllerOriginalImage];
// create a jpeg
NSData *jpegData = UIImageJPEGRepresentation(image, 1.0f);
// write jpeg image to file in app space
NSString *filePath =
// create file path in app space
[imageData writeToFile:filePath atomically:NO];
}
Это прекрасно работает, файл создается в формате JPEG с данными EXIF.
Теперь я хотел бынемного уменьшить изображение, чтобы сделать его немного меньше.Однако я хотел бы сохранить некоторые или все данные EXIF, которые существовали в исходном UIImage, и скопировать их в масштабированное изображение.
В настоящее время масштабирование изображения:
UIImage *scaledImage = [renderer imageWithActions:^(UIGraphicsImageRendererContext*_Nonnull myContext) {
[image drawInRect:(CGRect) {.origin = CGPointZero, .size = size}];
}];
Это создаеточень хорошо масштабированное изображение, однако оно не содержит данных EXIF.
Есть ли способ масштабирования изображения и сохранения данных EXIF исходного изображения?Могу ли я получить данные EXIF из исходного изображения и скопировать их в масштабированное изображение?
Кроме того, я перебрал много ответов, используя ALAssetsLibrary
, который сейчас не рекомендуется.Похоже, альтернатива PhotoKit
.В котором говорится:
В iOS и macOS PhotoKit предоставляет классы, которые поддерживают создание расширений для редактирования фотографий для приложения Photos.В iOS и tvOS PhotoKit также предоставляет прямой доступ к фото и видео активам, управляемым приложением Photos.
Однако я не использую приложение Photos, мое изображение не поступает из локальной библиотеки фотографийили icloud, поскольку я хочу сохранить фотографию только в своем личном пространстве приложения.