В приложении, над которым я работаю, мы собираем фотографии, которые должны иметь соотношение сторон 4: 3, чтобы максимизировать поле обзора, которое мы снимаем. До сих пор мы использовали AVCaptureSessionPreset640x480
пресет, но теперь нам нужно большее разрешение.Изменение размера CMSampleBufferRef обеспечивается captureStillImageBracketAsynchronouslyFromConnection: withSettingsArray: completeHandler:
Насколько я понял, единственными двумя форматами 4: 3 являются 2592x1936 и 3264x2448. Поскольку они слишком велики для нашего случая использования, мне нужен способ уменьшить их. Я просмотрел множество опций, но не нашел способ (предпочтительно без копирования данных), чтобы сделать это эффективным образом, не теряя данные exif.
vImage
был одной из вещей, которые я изучил, но насколько я понял, данные должны быть скопированы, а данные exif будут потеряны. Другим вариантом было создание UIImage
из данных, предоставленных jpegStillImageNSDataRepresentation
, масштабирование и возврат данных. Этот подход также, похоже, лишает данные exif.
Идеальный подход здесь будет изменять размер содержимого буфера напрямую и изменить размер фотографии. Кто-нибудь есть идея, как я буду заниматься этим?