如何在discord.js中通过URL获取图片的尺寸
Node.js 环境下获取远程图片尺寸的解决方案
无第三方库实现方案
- 结论是可以实现,但开发成本较高,需要手动解析不同图片格式的二进制文件头
- 实现思路:
- 使用Node.js内置的
http/https模块发送带Range请求头的HTTP请求,仅拉取图片前1-2KB的内容即可,常用图片格式的宽高信息都存储在文件头的前几百字节中,无需下载完整图片 - 读取返回的Buffer,先通过魔数判断图片格式,比如PNG的魔数是
89 50 4E 47、JPG是FF D8 FF - 根据对应格式的官方规范,从Buffer的指定偏移位置读取宽度、高度的字节数据,转换为数值即可
- 使用Node.js内置的
- 注意事项:需要自行兼容所有需要支持的图片格式,还要处理HTTP重定向、服务端不支持Range请求、资源非合法图片等异常场景,仅适合有高度自定义需求的场景使用。
推荐第三方库
如果不想自行处理复杂的兼容逻辑,优先选择专门的轻量库:
- 首选
image-size:这是专门用于读取图片尺寸的轻量库,支持几乎所有常用图片格式,支持读取本地文件、Buffer、远程URL资源,无需下载完整图片即可拿到尺寸,完全适配discord.js的开发场景。
基础使用示例:const sizeOf = require('image-size'); // 读取远程图片尺寸 sizeOf('https://example.com/test.png', (err, dimensions) => { if (err) throw err; console.log(dimensions.width, dimensions.height); }); - 如果项目本身已经在使用
sharp做图片处理,也可以直接用sharp读取尺寸,不需要额外引入其他依赖。
内容的提问来源于stack exchange,提问作者Apollo24
相关产品推荐
相关产品推荐

