微信获取素材接口地址:

https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

调用参数:

{"type":TYPE,//    素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)"offset":OFFSET,//从全部素材的该偏移位置开始返回"count":COUNT //返回素材的数量,取值在1到20之间
}

返回结构

{"total_count": TOTAL_COUNT,//素材总数"item_count": ITEM_COUNT,//当前数"item": [{//素材列表"media_id": MEDIA_ID,"name": NAME,"update_time": UPDATE_TIME,"url":URL},]
}

获取公众号所有素材的思路:

count给最大值20,第一次调用获取total_count,利用total_count除以count获取剩余请求接口数,最后将数据写入数据库

以上操作都很正常,但是当查看数据库后发现 出现了N多name值为CropImage的图片,且素材库里面并没有这些图片,并且图片返回的还不完全

最终查出CropImage产生的原因

用户设置图文消息==>上传图片==>放入素材库==>微信根据传图大小剪裁==>生成多张名为CropImage的隐藏素材库图片

所以这些图片是上传图片的剪裁的一部分 但是这些CropImage的图片不会在素材库里面展示 并且也不占用total_count的个数,但是接口会反回这些数据,就问你坑不坑?更坑的是 当你删除图文消息,删除素材库里面的原图,这些CropImage依然存在于你的接口返回数据里面

最终由于返回图片数远大于total_count导致我的代码出现了bug,也产生了一些没有实际作用的图片,接下来放上优化后的代码

        $api = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=1';$num = 20;$type = 'image';$data = ['type'=>$type,'offset'=>0,'count'=>$num];$has = $i = 1;$items = [];while($has){$data['offset'] = $num*($i-1);$return = curlRequest($api,$data);//curlRequest封装一个culr方法if($return['item_count']<$num){//返回数少于num数 则表示下面没有图片 终止循环$has = 0;}if($return['item_count']>0){$items = array_merge($items, $return['item']);}$i++;}$mediaData = [];foreach($items as $item){if(strtolower($item['name'])=='cropimage'){//放弃cropimage图片的存储continue;}$mediaData[]=['app_id'=>$this->app_id,'media_id'=>$item['media_id'],'name'=>$item['name'],'type'=>$type];}save($mediaData);//数据写入

以上;

关于微信获取素材列表返回CropImage图片的解决办法相关推荐

  1. php微信获取素材列表,20.6.7 获取素材列表

    { "type":"image", "offset":0, "count":10 } 上述数据的参数说明如表20-31所 ...

  2. java微信获取素材列表_获取素材列表

    本接口可以获取当前管理组指定类型的素材列表. 请求说明 Https请求方式: POST 请求包结构体为 { "type": "image", "off ...

  3. 微博移动版获取评论时返回{ok:0}的解决办法

    评论获取的方法可以参考这篇文章https://www.jianshu.com/p/8dc04794e35f,讲的非常详细. 但是可能一些朋友还是会和我遇到一样的问题:无论做什么尝试在第一页之后评论返回 ...

  4. Atitti dbutil获取多个返回结果集的解决

    Atitti dbutil获取多个返回结果集的解决 1.1. 多个select默认只返回第一个resultset1 1.2. 调用存储过程,也是返回第一个select的1 1.3. 如果insert前 ...

  5. python获取网页json返回空_Python用requests库爬取返回为空的解决办法

    首先介紹一下我們用360搜索派取城市排名前20. 我们爬取的网址:https://baike.so.com/doc/24368318-25185095.html 我们要爬取的内容: html字段: r ...

  6. 微信小程序 border设置单边框失效解决办法

    微信小程序 border设置单边框失效解决办法 遇到的问题 解决的方法 总结 遇到的问题 border-right: 1 rpx solid #ccc;border-bottom: 1 rpx sol ...

  7. 微信公众号开发redirect_uri 参数错误 的解决办法,Oauth2授权重定向域名参数错误解决办法

    问题概述 关于这个问题,博主是在进行微信公众号开发过程中获取微信公众号CODE用于下一步验证获取openid和access_token时遇到的, 回调地址: " https://open.w ...

  8. [转]Silverlight在调用wcf时传输数据过大返回Not Found的解决办法

    原文地址:http://www.cnblogs.com/gavinyao/archive/2012/04/17/2454495.html Silverlight在调用wcf时传输数据过大返回Not F ...

  9. 自定义View 中很关键的问题View获取宽/高是0 的解决办法

    原因 Activity的生命周期方法 与 View在measure过程 不是同步执行的,也就是说Activity在执行onCreate ,onStart , onResume 过程中 ,View的测量 ...

最新文章

  1. uboot i2c 命令的读写测试
  2. jq获取after和before伪类的content值
  3. python装饰器原理-python 中的装饰器及其原理
  4. html transform属性,css3 transform属性详解
  5. 厂商 push 不通排查指南
  6. CLD: 通过挖掘实例与聚类间关系进行无监督特征学习
  7. Office 2010 体验系列之Outlook使用
  8. C++继承机制(中篇)
  9. 基础 - 常见字符的ASCII码
  10. 网站服务器建立数据库连接时出错,修复Wordpress博客网站“建立数据库连接时出错”错误记录 | 科技爱好者博客 -专注于树莓派(Raspberry Pi)...
  11. strcpy_s函数
  12. 如何使用FlashgameMaster修改游戏
  13. c语言求布尔矩阵的乘积,离散数学 关系矩阵的布尔乘法的简便方法
  14. 【中创福利】有一种年味叫公司发年货
  15. There appears to be a gap in the edit log. We expected txid 1, but got txid 16
  16. 不值一提的计算机基础教程-0-前言
  17. matalb读取txt文件以及将数据写入txt文件
  18. electron-vue打包后样式变大以及不同分辨率屏幕适配问题
  19. 微信小程序手动添加收货地址省市区联动
  20. 新装linux系统(centOs7)使用nginx驱动vue项目

热门文章

  1. 操作系统原理学习笔记(文件与I/O)
  2. maven在线搜索jar组件坐标
  3. docx4j设置word表格的行在各页顶端以标题形式重复出现(跨页显示)
  4. 语言的魅力:斡旋的力量(二)
  5. 面试: 1.表达能力、性格、基本情况
  6. 推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF/TDM/Airbnb Embedding/Item2vec等)、召回路径简介、多路召回融合]
  7. 带主动降噪的百元蓝牙耳机,音质表现也不错,QCY-T13 ANC体验
  8. 基于YoloV5和MTCNN的Perclos方法检测疲劳(遇到困难重重,暂时不更新该主题了)
  9. YGG 公会发展计划(GAP)第二季总结
  10. 怎么把visio 2010中的框中的字变成竖排以及如何将visio图插入word