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
方法将图像保存到本地文件。