根据Core Image文档,以下API应返回原始图像的本机输出大小。
let filter = CIFilter(imageURL: url, options: nil)
let value = filter.value(forKey: CIRAWFilterOption.outputNativeSize.rawValue ) as? CIVector
然而,这似乎总是返回相机的原始分辨率,而不是原始文件中包含的实际图像大小。
例如,如果我在Sony 19上以16:9宽高比拍摄的原始文件使用此API,图像大小应为6000 x 3376,但此API调用返回6000 x 4000。
这是一个bug,还是我遗漏了什么--有没有另一个API调用来获取实际的图像大小?
请注意,EXIF数据包含正确的图像大小。
发布于 2021-05-05 02:05:04
好的,似乎相机存储了一个缩略图,这是使用相机的纵横比设置生成的,但原始文件仍然包含完整的图像,即相机本地传感器大小。
当使用macOS QuickLook缩略图生成器时,您可以获得相机生成的缩略图,该缩略图被裁剪为当时设置的任何纵横比。
但是,当使用CIFilter获取原始CIImage时,您会得到完整的未裁剪图像。如果使用CIFilter查询图像大小,还可以获得完整的图像大小。
似乎裁剪后的图像大小是在EXIF的XDimension和YDimension属性中定义的。
https://stackoverflow.com/questions/67392892
复制相似问题