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
相关产品推荐
相关产品推荐

