微信小步伐实现本舆图片压缩

打印 上一主题 下一主题

主题 943|帖子 943|积分 2829

近来在刚好遇到要压缩图片,网上随手搜了一下图片在线压缩,效果要么必要登录、要么要看广告,感觉很贫苦,于是乎,就在我的小步伐“小白工具集”里撸了一个图片压缩的功能(写小步伐纯属个人爱好)
图片大小必然遵照两个原则
1、相同格式下图片越清晰,文件越大
2、相同格式下图片尺寸越大,文件越大
所以我们压缩就只干两件事:可担当的范围内变的更模糊、变的更小
  实现步骤

1、通过相册、相机或会话选择文件的api来拿到暂时文件
2、辨认装备类型,非ios装备直接利用微信官方的压缩api,然后over!
3、区分图片类型,JPG图片同样直接利用微信官方的压缩api,然后over!
4、计算压缩、裁切后的图片大小,将图片绘制到画布上,然后导出为JPG格式,最后同样是利用微信官方的压缩api,然后over!
but,坑来了,ios真机上高度大概宽度过大的图片画布在导出时抛canvasToTempFilePath:fail parse native buffer parameter error. native buffer exceed size limit非常,没办法只能继续打补丁:先导出为base64然后再天生暂时文件,再进行压缩…无语了…
小步伐API列表

下面列举大概会用到的一些API,各人可以根据自己的需求选择利用


  • wx.chooseMedia 选择媒体文件。
    设置mediaType:['image']和sourceType:['album','camera'],从相册、相机读取文件,拿到暂时文件地点
  • wx.chooseMessageFile 从会话选择聊天文件
    设置type: 'image'来过滤图片文件,可以很方便的从聊天会话或文件传输助手拿到文件
  • wx.getFileSystemManager().getFileInfo 获取文件信息
    根据暂时文件路径拿到文件的大小
  • wx.getImageInfo 获取图片信息
    这里接口也支持下载网络图片,我们这里仅仅用它来根据暂时文件路径获取图片的宽和高
  • wx.compressImage 图片压缩接口
    这个接口是微信提供的图片压缩API,可选压缩质量,很方便…但是吧,iOS端仅支持压缩 JPG格式图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表