Asset.get_image raises AttributeError: 'NoneType' on image in Camera Roll

Asset.get_image raises AttributeError: 'NoneType' on image in Camera Roll

我有一个脚本可以遍历标准相机胶卷资产集合中的所有图像。

我在相机胶卷相册中的循环工作正常,但是,有些图像在 a.get_image() 上引发 AttributeError 异常。

代码(我删除了逐个资产循环以专注于这个问题图像):

a = album.assets[-2] #Image causing problem (-1 image works just fine).
try:
    p = a.get_image()
except AttributeError as e:
    print ('Attribute Error: {}'.format(e))

变量'a'好像没问题。它有一个 'image' 的 media_type,它有一个 modification_date,一个位置元组,像素高度和宽度,所有这些看起来都很好。

使用 Asset.get_ui_image() 可以很好地打开文件,但这不是我想要的,如果能弄清楚为什么这张图片看起来和相机胶卷中的其他图片一样,那就太好了,谁的资产对象看起来也不错,会有问题。

异常错误变量 'e' 仅提供字符串:'NoneType' 对象没有属性 'decode'。

似乎 Asset.get_image() 方法试图使用 PIL.image.open() 但有些东西失败了,但没有真正的指示(不确定异常字符串的真正含义)。

我们非常欢迎任何关于解决这个问题的见解。

谢谢! B.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

更新

我将违规照片从我的 iOS 设备复制到 Windows 机器。然后我写了一个Python脚本直接使用PIL.Image.open()打开图片文件。一切正常,没有错误,并且 EXIF 信息与 iOS 设备上的信息相匹配。

我想在我的 iOS 设备上尝试这个。我有文件名,但不知道照片目录的路径,因此,我收到找不到文件的错误。

有人知道 iOS 照片的路径吗?

再次感谢, B.

对于任何感兴趣的人,这个问题与新的 Apple 照片文件格式 HEIC 有关。

我拥有的每个带有 HEIC 扩展名的文件都失败了。

我不知道 PIL 和这种新格式的状态。对于搜索 "pythonista pil heic",每次匹配返回时都没有提及 HEIC。我猜 PIL 还没有为 HEIC 做好准备。

我确实找到了这个 link,所以其他人也看到了这个:Converting to JPEG given image data and UTI

如果有人知道 PIL 和 HEIC 的状态,很高兴听到。

谢谢, B.