Python如何从content-type为mime:image/jpg的API响应中获取并保存图片
将API返回的图片字符数据转为可查看JPG文件的实现方法
你拿到的/9j/开头的字符串是JPG图片的标准Base64编码结果,只需要对字符串做Base64解码,再将解码后的二进制内容写入.jpg后缀的文件,就能正常打开查看图片。
注意:如果API返回的内容自带
data:image/jpeg;base64,前缀,需要先把这部分前缀剔除,再执行解码操作,否则会导致解码失败、文件损坏。
常用实现代码示例
- Python 实现(无需第三方依赖)
import base64 # 替换为API返回的完整Base64字符串 base64_content = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAMABAABAREA/8QAGwABAAMBAQEBAAAAAAAAAAAAAAQFBgMHAgj/xAA4EAABBAIBAwIFAwMCBwEBAQEAAQIDBAUREgYTIRQiFRYxMkEHIzMlUWI0QkZhZXGhoqOBF1Ik/9oACAEBAAA/APyo......" # 解码得到图片二进制数据 img_binary = base64.b64decode(base64_content) # 以二进制写入模式保存文件 with open("result.jpg", "wb") as f: f.write(img_binary)
运行脚本后,同目录下生成的result.jpg就是可直接查看的图片文件。
- Node.js 实现
const fs = require('fs'); // 替换为API返回的完整Base64字符串 const base64Content = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/......"; // 解码为二进制Buffer const imgBuffer = Buffer.from(base64Content, 'base64'); // 写入文件 fs.writeFileSync('result.jpg', imgBuffer);
- 浏览器前端实现
// 替换为API返回的完整Base64字符串 const base64Content = "/9j/4AAQSkZJRgABAQAAAQABAAD/......"; // 拼接为DataURL可直接用于图片展示 const imgSrc = `data:image/jpeg;base64,${base64Content}`; // 方式1:赋值给页面img标签直接展示 // document.getElementById('previewImg').src = imgSrc; // 方式2:触发浏览器下载图片 const downloadLink = document.createElement('a'); downloadLink.href = imgSrc; downloadLink.download = 'result.jpg'; downloadLink.click();
常见踩坑点
- 写入文件时必须选择二进制写入模式,如果用默认文本模式写入,会自动转义特殊字符导致文件损坏无法打开
- 传入解码函数的Base64字符串不能有多余的换行、空格,否则会解码失败
- 必须拿到API返回的完整字符串才能生成正常图片,问题中贴出的是截断的片段,用片段内容解码只能得到损坏的不完整图片
内容的提问来源于stack exchange,提问作者maria
相关产品推荐
相关产品推荐

