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

如何从Telegram返回的图片列表中筛选最高清版本对应的file_id

实现代码

你可以直接使用以下逻辑完成高清图片筛选,代码兼容你当前的使用场景:

var contents = JSON.parse(e.postData.contents);
var photoList = contents.channel_post.photo;

// 初始化最大分辨率记录、对应图片下标
let maxLongSide = 0;
let targetPhotoIndex = 0;

// 遍历所有图片规格
for (let i = 0; i < photoList.length; i++) {
  const currentPhoto = photoList[i];
  // 计算当前图片的长边长度
  const currentLongSide = Math.max(currentPhoto.width, currentPhoto.height);
  // 匹配更长边的图片
  if (currentLongSide > maxLongSide) {
    maxLongSide = currentLongSide;
    targetPhotoIndex = i;
  }
}

// 拿到最终需要的file_id
const targetFileId = photoList[targetPhotoIndex].file_id;
Logger.log(targetFileId);
// 对应调用格式示例:contents.channel_post.photo[targetPhotoIndex].file_id

逻辑说明

  • 遍历图片数组时,用Math.max(宽度, 高度)计算每个图片的长边数值,长边越长代表图片分辨率越高
  • 全程记录最大的长边数值和对应的数组下标,遍历完成后得到的就是最高清图片的位置
  • 你给出的示例数据中,下标为3的图片长边为Math.max(1400, 1100) = 1400,为所有条目最大值,和你预期的结果一致

可选优化

如果存在多个图片长边数值相同的情况,可以额外比较file_size字段,取文件体积更大的版本,画质通常更好,修改判断条件即可:

if (
  currentLongSide > maxLongSide || 
  (currentLongSide === maxLongSide && currentPhoto.file_size > photoList[targetPhotoIndex].file_size)
) {
  maxLongSide = currentLongSide;
  targetPhotoIndex = i;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:00:00