为了账号安全,请及时绑定邮箱和手机立即绑定

Android 分享微信小程序之图片优化

标签:
Android

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

webp

遮挡部分图片

webp

规定

      小菜尝试了图片的【等比压缩】【非等比压缩】和【不压缩】,效果依旧不合适,图片所占位置默认以横向方向填充满分享出的布局。于是小菜决定重新用 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 整体效果较为合适。大家可以根据个人需求自定义图片样式。

webp

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 需要进行压缩,公共的方法暂时就省略啦!



作者:阿策神奇
链接:https://www.jianshu.com/p/b78fc8a4c053


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消