tensorflow PIL.UnidentifiedImageError:无法 识别 0x1010864a0 处 的 映像 文件 _ io . bytesIO 对象

epggiuax  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在使用tensorflow来读取编码和解码图像,但在这样做时出现上述错误。

import tensorflow as tf
import base64
import numpy as np
from PIL import Image
import io
############################################ IMAGE READ #################################################
#tensorflow==2.10.0

image = tf.io.read_file('Cotton American boll worm 2.jpg' , name = None)
############################################ IMAGE DECODING #################################################
b_64 = tf.io.encode_base64(image, pad=False, name=None)
decode_image = tf.io.decode_base64(b_64, name=None)
sol = io.BytesIO(decode_image)
image = Image.open(sol)#HERE IS THE ERROR
5tmbdcev

5tmbdcev1#

在使用print()检查它在变量中有什么之后,我发现它将完整的对象tensor转换为BytesIO中的bytes(它将Tensor序列化),但它必须从tensor中只获得原始的bytes
而且我发现它需要.numpy()才能从tensor获得预期的数据。

sol = io.BytesIO(decode_image.numpy())

完整工作代码

import tensorflow as tf
import base64
import numpy as np
from PIL import Image
import io

image = tf.io.read_file('image.jpg', name=None)

b_64 = tf.io.encode_base64(image, pad=False, name=None)
#print('b_64:', b_64)

decode_image = tf.io.decode_base64(b_64, name=None)
#print('decode_image:', decode_image)          # tensor
#print('decode_image:', decode_image.numpy())  # bytes

#sol = io.BytesIO(decode_image)         # tensor
#print('sol:', sol.getvalue())          # wrong data

sol = io.BytesIO(decode_image.numpy())  # bytes
#print('sol:', sol.getvalue())          # correct data

image = Image.open(sol)
image.show()

相关问题