<p>在某些情况下,处理原始图像文件(如CR2)时也会发生相同的错误。示例:<a href="http://www.rawsamples.ch/raws/canon/g10/RAW_CANON_G10.CR2" rel="nofollow noreferrer">http://www.rawsamples.ch/raws/canon/g10/RAW_CANON_G10.CR2</a></p>
<p>当你试图跑步时:</p>
<pre><code>byteImg = Image.open("RAW_CANON_G10.CR2")
</code></pre>
<p>您将得到以下错误:</p>
<pre><code>OSError: cannot identify image file 'RAW_CANON_G10.CR2'
</code></pre>
<p>因此,首先需要使用rawkit转换图像,下面是一个如何进行转换的示例:</p>
<pre><code>from io import BytesIO
from PIL import Image, ImageFile
import numpy
from rawkit import raw
def convert_cr2_to_jpg(raw_image):
raw_image_process = raw.Raw(raw_image)
buffered_image = numpy.array(raw_image_process.to_buffer())
if raw_image_process.metadata.orientation == 0:
jpg_image_height = raw_image_process.metadata.height
jpg_image_width = raw_image_process.metadata.width
else:
jpg_image_height = raw_image_process.metadata.width
jpg_image_width = raw_image_process.metadata.height
jpg_image = Image.frombytes('RGB', (jpg_image_width, jpg_image_height), buffered_image)
return jpg_image
byteImg = convert_cr2_to_jpg("RAW_CANON_G10.CR2")
</code></pre>
<p>GitHub上mateusz michalik的代码信用(<a href="https://github.com/mateusz-michalik/cr2-to-jpg/blob/master/cr2-to-jpg.py" rel="nofollow noreferrer">https://github.com/mateusz-michalik/cr2-to-jpg/blob/master/cr2-to-jpg.py</a>)</p>