我有一个块blob,它是一个png图像。当我将blob变为字节并尝试创建图像时,我得到数据不够。 我是python和图像分析的新手。问题是,如果图像分别为2024 * 1512,则斑点的大小为1714562,宽度为广告高度。 下面是我检索图像的代码:
#Get Required image
def findImage(containerName, imageName):
return block_blob_service.get_blob_to_bytes(
containerName,
input_folder + '/' + imageName,
max_connections=1).content;
我必须做下面描述的这样的事情来创建一个图像:
np.array(imageToProcess).reshape(imageSize)
或
PIL.Image.frombytes('L', imageSize, np.byte(imageToProcess), 'raw', 'L', 0, 1)
我试图让blob流或路径仍然有相同的问题。需要将此Blob重新整形为实际图像大小并传递给另一个过程函数。 如果有人帮助我解决问题和可能的解决方案,我将不胜感激。
答案 0 :(得分:0)
从Azure Blob Storage下载的PNG文件是一个png格式的二进制字节字符串,您需要使用OpenCV&amp ;;将其转换为numpy数组。 Numpy或PIL.Image
对象。
以下是使用OpenCV& amp;的示例代码。 numpy或PIL.Image
。
使用OpenCV& numpy的
import numpy as np
import cv2
data = findImage(containerName, imageName)
print type(data)
# <type 'str'>
nparr = np.fromstring(data, np.uint8)
# if the numpy version is 2.x
img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)
# if the numpy version is 3.x
img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
print type(img_np)
# <type 'numpy.ndarray'>
使用PIL.Image
&amp; StringIO
from PIl import Image
from StringIO import StringIO
data = findImage(containerName, imageName)
print type(data)
# <type 'str'>
img = Image.open(StringIO(data))
print type(img)
# <class 'PIL.PngImagePlugin.PngImageFile'>
希望它有所帮助。