Я нашел проблему.На самом деле, он скрывался на виду.То, что получается из метода +[AVDepthData depthDataFromDictionaryRepresentation:error:]
, возвращает несоответствие данных.Я преобразовал его в глубина , используя следующий код:
if(depthData.depthDataType != kCVPixelFormatType_DepthFloat32){
depthData = [depthData depthDataByConvertingToDepthDataType:kCVPixelFormatType_DepthFloat32];
}
(не пробовал, но 16-битная глубина, kCVPixelFormatType_DepthFloat16
, также должна хорошо работать)
После преобразования несоответствия в глубину изображение точно такое же, как в Photoshop.Я должен был проснуться, когда использовал CGImageSourceCopyAuxiliaryDataInfoAtIndex(imageSource, 0, kCGImageAuxiliaryDataTypeDisparity);
(обратите внимание на «несоответствие» в конце), и Photoshop четко говорил «карта глубины», преобразовывая несоответствие в глубину (или просто читая как глубину, я, честно говоря, не знаюфизическое кодирование, может быть, iOS преобразовывала глубину в несоответствие, когда я копировал вспомогательные данные в первую очередь) на лету.
Примечание: Я также решил проблему ориентациисоздавая источник изображения непосредственно из метода [PHAsset requestContentEditingInputWithOptions:completionHandler:]
и передав contentEditingInput.fullSizeImageURL
в метод CGImageSourceCreateWithURL
.Он позаботился об ориентации.