如何使用Python读取Google Drive图片并存储到二进制字段
实现方案及体积过大问题解决
你现有代码的核心问题是额外做了冗余的base64编码:base64编码会将原始二进制数据的体积扩大33%左右,如果你最终要存储到二进制字段,完全不需要经过base64转码步骤,直接存储读取到的原始二进制流即可。
1. 精简存储逻辑
直接去掉base64编码步骤,修改后代码如下:
import urllib.request # 注意此处的image_path需要是Google Drive的直链,不能用普通分享链接 image_binary = urllib.request.urlopen(image_path).read() # 直接将image_binary写入数据库的二进制字段(比如MySQL的BLOB、PostgreSQL的BYTEA类型字段)即可
2. Google Drive图片的正确读取方式
普通的Google Drive分享链接(格式为https://drive.google.com/file/d/<文件ID>/view)无法直接用urllib读取到文件内容,需要先转成直链格式,转换规则如下:
- 提取分享链接里的文件ID:即链接中
d/和/view之间的字符串 - 替换为直链格式:
https://drive.google.com/uc?export=download&id=<替换为你的文件ID>
如果需要批量读取或者处理大体积图片,也可以使用Google Drive官方API读取,获取到的内容同样是原始二进制流,无需额外转码即可直接存入二进制字段。
内容的提问来源于stack exchange,提问作者Neural
相关产品推荐
相关产品推荐

