1

我想使用 Python 将 .CR3 文件(相机是 Canon PowerShot SX70 HS)转换为 .JPG 文件。我在 GitHub 上找到了一个项目,它实际上应该完成所需的任务:https ://github.com/lclevy/canon_cr3

我已经使用 setup.py 文件安装了 canon_cr3 库。确实,安装库后存在 canon_cr3-13mar2019-py3.6.egg 文件。因此,当我输入

from canon_cr3 import Image

在 Python 3.6.1 shell 中按回车,似乎导入成功(没有出现错误消息)。但是,当我在https://github.com/lclevy/canon_cr3#example-usage上尝试示例时

image = 'D:\pic\test_img.CR3'
image = image.replace("\\", "/") #working on Windows
img = Image(image)

出现错误:

NameError: name 'getLongBE' is not defined

错误出现在执行stsz()函数的“cr3_lib.py”文件中。getLongBE ()函数在库的“parse_cr3.py”文件中定义。但是,我看不到“parse_cr3.py”文件和“cr3_lib.py”文件之间的链接。

我不知道我错过了什么,尝试什么或如何解决这个问题。你有什么建议吗?或者是否有另一种方法可以在 Python 中将 .CR3 文件转换为 .png?

4

1 回答 1

3

更新:

只需在文件中添加缺少的功能cr3_lib.py

def getLongBE(d, a):
    return unpack('>L',(d)[a:a+4])[0]

你的cr3_lib.py文件应该是这样的:

from struct import unpack, Struct
from binascii import unhexlify, hexlify
# from parse_cr3 import getLongBE # remove this line

def getLongBE(d, a):
    return unpack('>L',(d)[a:a+4])[0]

...

注意:如果您之前添加过,请从当前文件中删除以下行:

from parse_cr3 import getLongBE
于 2019-09-16T08:31:24.610 回答