No connection adapters were found for 'data:image/png;base64

No connection adapters were found for 'data:image/png;base64,...' 这个错误通常发生在尝试使用像requests这样的HTTP库去访问一个Data URI scheme时。Data URI scheme(如data:image/png;base64,...)不是一个有效的URL,而是一个嵌入在文档或网页中的二进制数据的直接表示,通常用于嵌入图像、样式或其他资源。

由于Data URI scheme不是一个指向网络上某个位置的URL,所以不能使用requests或其他HTTP客户端库去“下载”或“请求”它。相反,你应该直接从Data URI中提取出Base64编码的数据,然后将其解码为二进制数据,并最终写入文件。

如果你正在处理一个包含Data URI的字符串,并且想要将其保存为PNG图片,你可以使用Python的base64库来解码Base64字符串,并将其保存为文件。以下是一个简单的示例:

import base64
import io
from PIL import Image

# 假设你有一个包含Data URI的字符串
data_uri = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='

# 分割Data URI以获取Base64编码的部分
_, encoded_image = data_uri.split(',', 1)

# 解码Base64字符串为二进制数据
decoded_image = base64.b64decode(encoded_image)

# 使用PIL库将二进制数据转换为图像对象
image = Image.open(io.BytesIO(decoded_image))

# 将图像保存到本地文件
image.save('output.png')

 

在这个例子中,我们首先使用字符串的split方法将Data URI分割为两部分:MIME类型和Base64编码的数据。然后,我们使用base64.b64decode函数解码Base64字符串为二进制数据。接下来,我们使用PIL(Python Imaging Library,也称为Pillow)的Image.open方法来打开一个从二进制数据中创建的类文件对象(使用io.BytesIO)。最后,我们使用image.save方法将图像保存到本地文件。

posted @ 2024-06-17 17:19  淇实是我  阅读(5)  评论(0编辑  收藏  举报