小菜上周接入了微信分享小程序的入口,基本功能实现都没问题,有需要的朋友可以了解一下 Android 分享微信小程序失败二三事,虽然功能都正常,但整体测试发现图片展示效果不佳。于是小菜整理了一个简单的小方法处理一下图片!

微信规定,分享小程序展示的图片应该在 128KB 以内,同时图片默认展示比例为 5:4,这样小菜默认的图很多是竖直的图,只会展示一部分。

遮挡部分图片

规定

小菜尝试了图片的【等比压缩】【非等比压缩】和【不压缩】,效果依旧不合适,图片所占位置默认以横向方向填充满分享出的布局。于是小菜决定重新用 Canvas 绘制一张图,将所要展示的图片居中展示,整理方法如下:

public static Bitmap drawWXMiniBitmap(Bitmap bitmap, int width, int height) {

Bitmap mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

// 用这个Bitmap生成一个Canvas,然后canvas就会把内容绘制到上面这个bitmap中

Canvas mCanvas = new Canvas(mBitmap);

// 绘制画笔

Paint mPicturePaint = new Paint();

// 绘制背景图片

mCanvas.drawBitmap(mBitmap, 0.0f, 0.0f, mPicturePaint);

// 绘制图片的宽、高

int width_head = bitmap.getWidth();

int height_head = bitmap.getHeight();

// 绘制图片--保证其在水平方向居中

mCanvas.drawBitmap(bitmap, (width - width_head) / 2, (height - height_head) / 2,

mPicturePaint);

// 保存绘图为本地图片

mCanvas.save();

mCanvas.restore();

return mBitmap;

}

小菜测试时发现,很多图片的尺寸大小和宽高比并非固定的,为了适配整体展示效果,当宽高比小于1时,根据图片高度来计算整体绘制 Bitmap 宽,Bitmap 可以根据需求展示相应的本地资源图或网络图,宽高可以直接设置 5:4 大小,小菜测试 width = 300; height = 240 整体效果较为合适。大家可以根据个人需求自定义图片样式。

Bitmap bitmap = BitmapUtil.drawWXMiniBitmap(bitmap, bitmap.getHeight() * 5 / 4, bitmap.getHeight());

if (BitmapUtil.isOverSize(bitmap, 128)) {

bitmap = Utils.resizeBitmap(bitmap, 300, 240);

}

Tips: 绘制完成之后的图会比原图大,所以需要先绘制图片,再判断图片是否超过 128KB。若超过 128KB 需要进行压缩,公共的方法暂时就省略啦!

内容很少,有问题的地方还请多多指教!

来源: 阿策小和尚

android 分享小程序到微信,Android 分享微信小程序之图片优化相关推荐

  1. 网站图片优化的小技巧分享

    随着网站建设越来越多样化,网站的形式也逐渐随着用户的习惯在不断的变化,尤其是近来网站图文结合的形式给企业网站带来了更多的流量.但运用图文的方式也需要注重图片的优化才能更好的帮助网站赢取更多的推广效果, ...

  2. 小程序onShareTimeline()分享朋友圈 --仅限Android

    实现小程序的分享朋友圈功能 1. 根据官方文档是目前只支持Android版本 <分享朋友圈官方地址> 2. 开始操作 设置分享朋友圈的前提是必须同时设置发生给朋友,简单讲就是,可以单独设置 ...

  3. Android 酒店客房管理简单小程序(源码分享)

    程序实现功能:用户登陆注册,客房预订,房间查询,房间报修,房间退订,以维修部身份登陆查看房间损坏情况...功能简单,适合初学者拿来练手,或者大学有Android程序设计课的同学用来当个小课程设计. 程 ...

  4. app中使用企业微信sdk分享小程序报错:小程序路径错误,加载超时 解决办法。

    问题描述: 在app中,需要调用企业微信skd,分享小程序给客户,客户打开小程序. 如果客户直接是企业微信中的,可以在企业微信中打开小程序. 但是,如果客户是微信中,用户在微信中打开小程序就报错. i ...

  5. android源码大全 IOS游戏源代码打包下载 小游戏|视频教程 微信小程序源码带后台全套|公众号平台

    不断更新中,下面是2017-12-22更新部分 IOS_源码及视频一小部分: 开发环境:Xcode 基于cocos2d的tweejump跳跃游戏ios经典游戏源码.rar  https://pan.b ...

  6. 【微信小程序控制硬件 第14篇】分享一下我在微信公众号和小程序上实现的几个颜色采集器,轻松集成到您项目实现调光。

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  7. 微信小程序上手之路分享

    最近两周,处于公司业务需求,完成一个微信小程序的开发,主要是前端开发.无微信小程序和前端开发经验,纯属摸着石头过河,边学边干,花三周时间,完成了一个麻雀虽小五脏俱全的样品(具体内容不分享).就是这么一 ...

  8. 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

    本文由微信开发团队工程是由"oneliang"原创发表于WeMobileDev公众号,内容稍有改动. 1.引言 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBr ...

  9. Cordova 调用微信SDK,实现微信支付、微信分享、微信登录、打开微信小程序

    微信 cordova 插件 v1.0.0 插件环境 cordova-android >= 7.0.0 1.申请密钥 请到微信开放平台 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后, ...

  10. android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)

    3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...

最新文章

  1. WinAPI: CreateFontIndirect - 根据字体结构建立逻辑字体
  2. Python中的排序sorted(d.items(), key=lambda x: x[1])
  3. Braess’paradox 布雷斯悖论
  4. GDCM:gdcm::Preamble的测试程序
  5. 谈下关于kaggle的反作弊规则
  6. js中toFixed方法的两个坑
  7. python怎么打印路径,python 打印路径的几种结果
  8. Win10系统中英文切换
  9. QGIS教程01:为什么要用QGIS?
  10. xtraReport的简易使用方法
  11. 云班课python答案_云班课 答案 脚本
  12. tplinkwr710n改无线打印服务器,TP-Link TL-WR710N V1无线路由器AP模式怎么设置
  13. 服务器维护后灵魂兽,魔兽世界9.0新增10多个鬼服位面,都有机会拿迷时磷光灵魂兽...
  14. 二(1-苯基-异喹啉)(乙酰丙酮)合铱(III)
  15. 风景照片的PS后期处理(3)
  16. MapReduce是什么,MapReduce概念
  17. 简单聊一下Android音频通路的切换
  18. CVE-2015-0235:幽灵(GHOST)漏洞解析
  19. 我所玩过的GALGAME——メンアットワーク!魔兽学院men at work2的中文版《永远的羁绊》全攻略
  20. SpringCloud open feign too many bytes written问题处理

热门文章

  1. 科普:网格屏是什么意思?LED网格屏怎么安装
  2. 机器学习核心总结-概念、线性回归、损失函数、泛化及数据集划分、特征工程、逻辑回归和分类
  3. 对超级课程表产品的一些个人小看法
  4. 数组中重复的元素(剑指Offe.03)
  5. 入华商用四周年,Office 365小程序在路上
  6. 鸿蒙当中使用WebView报空指针的问题
  7. JavaScript弹性透明的图片放大代码
  8. puzzle(0921)HueBots
  9. @SpringBootTest与@RunWith注解的区别
  10. 用php语言说句情话,50句最美情话,套路我都懂,只是舍不得对你用