从Python io.BufferedReader类的实例读取/打开图像

时间:2018-11-20 14:48:05

标签: python image opencv python-imaging-library google-cloud-dataflow

我正在努力从Python的io.BufferedReader类的实例中正确打开TIFF图像。我使用下面的lib从GCS路径下载了该图像,但似乎无法使用传统工具打开该图像。

# returns the <_io.BufferedReader>
file = beam.io.gcp.gcsio.GcsIO().open("<GCS_PATH>", 'r')

from PIL import Image    
img = Image.open(file.read()) <---- Fails with "TypeError: embedded NUL character"

img = Image.open(file.raw) <--- Fails when any operations are performed with "IOError(err)"

除了PIL,我对其他图书馆也开放。

更新

以下内容也失败:

img = Image.open(file)

它失败并显示IOError,指出tempfile.tif: Cannot read TIFF header.

1 个答案:

答案 0 :(得分:0)

确保将它们都包装在ContextManager中,以便它们都可以正确关闭。

with beam.io.gcp.gcsio.GcsIO().open(file_path, 'r') as file, Image.open(io.BytesIO(file.read())) as multi_page_tiff:
     do_stuff()