首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Python存储下载Blob并从中创建Image对象?

如何从Python存储下载Blob并从中创建Image对象?
EN

Stack Overflow用户
提问于 2017-07-24 09:06:55
回答 1查看 3.4K关注 0票数 1

我有一个块blob,这是一个png图像。当我将blob转换为字节并尝试创建一个映像时,我得到的数据不够。我对python和图像分析很陌生。问题是,如果图像分别为2024*1512,则blob的大小为1714562,宽度和高度。下面是我检索图像的代码:

代码语言:javascript
运行
复制
#Get Required image
def findImage(containerName, imageName): 
    return block_blob_service.get_blob_to_bytes(
            containerName, 
            input_folder + '/' + imageName, 
            max_connections=1).content; 

我必须做一件如下所述的事情来创建一个图像:

代码语言:javascript
运行
复制
 np.array(imageToProcess).reshape(imageSize)

代码语言:javascript
运行
复制
PIL.Image.frombytes('L', imageSize, np.byte(imageToProcess), 'raw', 'L', 0, 1)
  • imageToProcess是findImage函数的输出。

我试图使blob流或路径仍然有相同的问题。这个Blob需要被重塑到实际的图像大小,并传递到另一个处理函数。如果有人帮助我解决问题和可能的解决方案,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 10:17:54

从Azure下载的PNG文件是png格式的二进制字节字符串,需要使用OpenCV & numpy或PIL.Image对象将其转换为Numpy数组。

下面是使用OpenCV & numpy或PIL.Image的示例代码。

  1. 使用OpenCV & numpy 将numpy导入为np导入cv2数据= findImage(containerName,imageName)打印类型( data )# nparr = np.fromstring(data,np.uint8) #如果numpy版本为2.ximg_np= cv2.imdecode(nparr,cv2.CV_LOAD_IMAGE_COLOR) #如果numpy版本为3.x img_np = cv2.imdecode(nparr,cv2.IMREAD_COLOR)打印类型( img_np )#
  2. 使用PIL.ImageStringIO 从PIl导入图像从StringIO导入StringIO数据= findImage(containerName,imageName)打印类型(数据)# img =Image.open(StringIO(数据))打印类型# PIL.PngImagePlugin.PngImageFile‘>

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45276455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档