在Python中将直接从URL获取的图像转换为Base64的方法,而无需将其保存为文件

29

我想将一个基于Web的图像转换为base64。目前我知道的方法是将图像保存为.jpg文件,然后使用base64库将.jpg文件转换为base64字符串。

我想知道是否可以跳过先保存图像的步骤?谢谢!


1
如果您分享目前的代码(下载到文件,然后转换),那么其他人帮助您将更加容易。现在,我甚至不知道您想要使用哪个库来首先获取文件。 - user94559
3个回答

80
使用requests库:
import base64
import requests


def get_as_base64(url):

    return base64.b64encode(requests.get(url).content)

如果我没有保存图片,那么我怎么能获取特定图片的URL? - rajlaxmi_jagdale
@rajlaxmi_jagdale:url 不可以是一个 s3 链接 吗? - aspiring1
11
base64 返回的是字节类型,因此你可能需要进行另一种转换才能获得字符串类型,例如 base64.b64encode(requests.get(url).content).decode('utf-8') - Mark Kortink

5

由于requests不是官方包,我更喜欢使用urllib。

from urllib.request import urlopen 
import base64

base64.b64encode(urlopen("http://xxx/yyy/abc.jpg").read())

    

0

这是我的解决方案:--

from base64 import b64encode
def url_to_base64(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    }
    return b64encode(requests.get(url, headers=headers, timeout=120).content).decode(
        "utf-8"
    )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接