You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js如何下载WebP图片?请求模块实现无后缀图片转存JPG

解决无后缀URL图片的下载问题

嗨,这个问题其实超容易搞定!requests模块完全不依赖URL末尾的后缀来下载图片,咱们只要能获取到图片的二进制数据,手动指定保存格式就OK了。

方法一:直接获取二进制内容写入文件

这种方法适合小图片,代码简洁直观:

import requests

# 目标图片URL
image_url = "https://lh3.googleusercontent.com/VpoWDgQ2I_RlTNM1Srlo5Q0VQglr-gdbzJ48TwYRXM2U4iF75PMrv76rBiu5c3l1UJs=s180-rw"

# 发送GET请求获取响应
response = requests.get(image_url)

# 检查请求是否成功(状态码200表示成功)
if response.status_code == 200:
    # 以二进制写入模式打开文件,文件名直接指定为.jpg格式
    with open("my_downloaded_image.jpg", "wb") as img_file:
        # 将响应的二进制内容写入文件
        img_file.write(response.content)
    print("图片已经成功保存为my_downloaded_image.jpg啦!")
else:
    print(f"哎呀,请求失败了,状态码是:{response.status_code}")

方法二:分块写入(适合大图片,节省内存)

如果遇到体积较大的图片,用分块写入的方式更友好,不会一次性把整个图片加载到内存里:

import requests

image_url = "https://lh3.googleusercontent.com/VpoWDgQ2I_RlTNM1Srlo5Q0VQglr-gdbzJ48TwYRXM2U4iF75PMrv76rBiu5c3l1UJs=s180-rw"

# 开启stream模式,避免一次性加载全部内容
response = requests.get(image_url, stream=True)

if response.status_code == 200:
    with open("large_image.jpg", "wb") as img_file:
        # 按1KB的块来读取并写入文件
        for chunk in response.iter_content(chunk_size=1024):
            img_file.write(chunk)
    print("大图片分块下载保存完成!")
else:
    print(f"请求出错,状态码:{response.status_code}")

核心逻辑说明

不管URL有没有后缀,服务器返回的图片本质是二进制数据,response.content(或分块的chunk)就是这些数据。咱们只需要在打开文件时,用wb(二进制写入)模式,并且给文件名加上.jpg后缀,就能把数据保存成合法的JPG图片啦。

内容的提问来源于stack exchange,提问作者LILBRICK1337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:55:03