
友盟分享本地图片到微信无法调起微信解决方案
发布日期:2021-06-23 19:02:47
浏览次数:8
分类:技术文章
本文共 3412 字,大约阅读时间需要 11 分钟。
转载请注明出处
Author:ruanjianjiagou@163.com 背景 webview 中分享本地图片到微信、朋友圈和QQ,目前QQ空间暂不支持分享纯图片,分享到QQ时正常分享,但分享到微信时调不起微信程序,此为背景,有以下解决方案。
有这样一段分享代码
private void performShare(SHARE_MEDIA platform) { Config.dialog = new LoadingDialog(mActivity); new ShareAction(mActivity).setPlatform(platform).setCallback(umShareListener) .withText(content) .withTargetUrl(targetUrl) .withTitle(title) .withMedia(getUMImage()) .share(); }
以上的友盟分享版本不确定,但每个版本分享都离不开ShareAction,withText,withTargetUrl,withTitle都可为空,withMedia 有内容就可以分享单纯的图片,其中要给withMedia(UMImage)
UMImage包含以下获取本地图片的方式UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片UMImage image = new UMImage(ShareActivity.this, file);//本地文件UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流
因为我们需求转成bitmap比较方便,于是直接设置进去的bitmap
基于原来的需求统一封装可能是url也可能是bitmap
UMImage getUMImage() { UMImage umImage = null; if (bitmap != null) { if (smallBitMap) { umImage = new UMImage(mActivity, BitMapUtil.ImageCompress(bitmap)); } else { umImage = new UMImage(mActivity, bitmap); } } else { umImage = new UMImage(mActivity, imgUrl); } return umImage; }
如果bitmap是null这设置url的方式 url为空也没关系,友盟都做了非空判断。
BitMapUtil.ImageCompress(bitmap) 这句肯定引起了你的注意,没错这就是本篇文章的重点
因为BitMap的大小是不确定的,如果给微信分享的话图片必须小于32K 所以这个工具类来处理下图片,将图片控制在32K以内。package com.ppdai.open.util;import android.graphics.Bitmap;import android.graphics.Matrix;import java.io.ByteArrayOutputStream;/** * Email:ruanjianjiagou@163.com * @data:17/1/18 下午1:59 * @Description:${todo} */public class BitMapUtil { public static Bitmap ImageCompress(Bitmap bitmap) { // 图片允许最大空间 单位:KB double maxSize = 32.00; // 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); // 将字节换成KB double mid = b.length / 1024; // 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { // 获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; // 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 bitmap = zoomImage(bitmap, bitmap.getWidth() / Math.sqrt(i), bitmap.getHeight() / Math.sqrt(i)); } return bitmap; } /*** * 图片压缩方法二 * * @param bgimage * :源图片资源 * @param newWidth * :缩放后宽度 * @param newHeight * :缩放后高度 * @return */ public static Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; }}
以上,将要分享的本地图片压缩到32K以内就能调起分享到微信或朋友圈。
但是ios可以分享原图,android如何分享本地原图呢,请看下篇。转载地址:https://blog.csdn.net/u014513456/article/details/54613444 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2023年09月07日 15时40分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于go-cqhttp实现QQ机器人
2019-03-07
HTML基础_1
2019-03-07
HTML基础_2
2019-03-07
列表、表格和媒体元素
2019-03-07
表单_2
2019-03-07
CSS_1
2019-03-07
css_2
2019-03-07
选择结构
2019-03-07
多重循环
2019-03-07
一维数组和应用
2019-03-07
冒泡排序和二维数组
2019-03-07
多线程
2019-03-07
虚拟机、mysql、hadoop伪分布式、高可用集群
2019-03-07
mysql-2(外键、DML)
2019-03-07
使用jdbc操作数据库
2019-03-07
hive分区、分桶、视图、侧视图
2019-03-07
【java面试经(架构师&设计师)-第5课】JAVA基础之多线程(一)
2019-03-07
ACL访问控制列表和NAT网络地址转换
2019-03-07
1.11网络小实验
2019-03-07
边界网关协议-BGP
2019-03-07