使用 Python 中的 canon_cr3 库将 .CR3 文件转换为 .JPG
Converting a .CR3 file to .JPG using canon_cr3 library in Python
我想使用 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
在Python3.6.1shell回车,好像导入成功了(没有报错)。但是,当我在 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
错误出现在'cr3_lib.py'文件中执行stsz()函数。 getLongBE() 函数在库的 'parse_cr3.py' 文件中定义。但是,我看不到 'parse_cr3.py' 文件和 'cr3_lib.py' 文件之间的 link。
我不知道我错过了什么、该尝试什么或如何解决这个问题。你有什么建议吗?
或者在 Python?
中是否有另一种方法可以将 .CR3 文件转换为 .png
更新:
只需在 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
我想使用 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
在Python3.6.1shell回车,好像导入成功了(没有报错)。但是,当我在 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
错误出现在'cr3_lib.py'文件中执行stsz()函数。 getLongBE() 函数在库的 'parse_cr3.py' 文件中定义。但是,我看不到 'parse_cr3.py' 文件和 'cr3_lib.py' 文件之间的 link。
我不知道我错过了什么、该尝试什么或如何解决这个问题。你有什么建议吗? 或者在 Python?
中是否有另一种方法可以将 .CR3 文件转换为 .png更新:
只需在 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