android 微信图片压缩,Android微信分享图片按质量压缩的解决方案

一、杂谈

微信分享图片的迷之bug,前一阵子接盘一个Hybrid App,分享要用原生的分享,搞了一阵子把微信分享搞上,测试又反馈了一个谜一样的Bug,我这边看Log打印了checkArgs fail, thumbData is invalid,google一番都说是图片不能超过32kb,在分享里面看到如下判断this.thumbData.length > '耀',一时间没有反应过来。。。可是怎么压缩好哇,我参照官方Demo和AndroidUtilCode的按质量压缩方法,找出了下面的解决方案,供大家参考。

二、将网络图片加载到内存

保存到本地在操作真心感觉麻烦

public static byte[] getHtmlByteArray(final String url) {

URL htmlUrl = null;

InputStream inStream = null;

try {

htmlUrl = new URL(url);

URLConnection connection = htmlUrl.openConnection();

HttpURLConnection httpConnection = (HttpURLConnection) connection;

int responseCode = httpConnection.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

inStream = httpConnection.getInputStream();

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

// 将io流转为byte数组

byte[] data = inputStreamToByte(inStream);

// 转换为bitmap

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

// 获取压缩后的byte数组

byte[] bytes = compressByQuality(bitmap, '耀', true);

return bytes;

}

三、将io流转为byte数组

public static byte[] inputStreamToByte(InputStream is) {

try {

ByteArrayOutputStream bytestream = new ByteArrayOutputStream();

int ch;

while ((ch = is.read()) != -1) {

bytestream.write(ch);

}

byte imgdata[] = bytestream.toByteArray();

bytestream.close();

return imgdata;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

四、按质量压缩

/**

* 按质量压缩图片

*

* @param src bitmap图片

* @param maxByteSize 最大字节数

* @param recycle

* @return

*/

public static byte[] compressByQuality(final Bitmap src, final long maxByteSize, final boolean recycle) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

src.compress(CompressFormat.JPEG, 100, baos);

byte[] bytes;

if (baos.size() <= maxByteSize) {

bytes = baos.toByteArray();

} else {

baos.reset();

src.compress(CompressFormat.JPEG, 0, baos);

if (baos.size() >= maxByteSize) {

bytes = baos.toByteArray();

} else {

// find the best quality using binary search

int st = 0;

int end = 100;

int mid = 0;

while (st < end) {

mid = (st + end) / 2;

baos.reset();

src.compress(CompressFormat.JPEG, mid, baos);

int len = baos.size();

if (len == maxByteSize) {

break;

} else if (len > maxByteSize) {

end = mid - 1;

} else {

st = mid + 1;

}

}

if (end == mid - 1) {

baos.reset();

src.compress(CompressFormat.JPEG, st, baos);

}

bytes = baos.toByteArray();

}

}

if (recycle && !src.isRecycled()) src.recycle();

return bytes;

}

五、微信分享

WXWebpageObject object = new WXWebpageObject();

object.webpageUrl = url;

WXMediaMessage wxMediaMessage = new WXMediaMessage(object);

// 标题

wxMediaMessage.title = title;

// 描述

wxMediaMessage.description = des.substring(0, 20);

// 图片

wxMediaMessage.thumbData = Util.getHtmlByteArray(image);

//构造一个Req

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.transaction = String.valueOf(System.currentTimeMillis());

req.message = wxMediaMessage;

req.scene = SendMessageToWX.Req.WXSceneSession;

mIWXAPI.sendReq(req);

六、源码

WechatShareUtil类

最接近微信朋友圈的图片压缩算法 想到App巨头“微信”会是怎么处理,Luban(鲁班)就是通过在微信朋友圈发送近100张不同分辨率图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。 因为有其他语言也想要实现Luban,所以描述了一遍算法步骤。 因为是逆向推算,效果还没法跟微信一模一样,但是已经很接近微信朋友圈压缩后的效果,具体看以下对比! 立即下载

相关推荐

android 图片无损压缩

这又是一个功能库,实现高效率的无损图片压缩功能,作者对比了使用该库压缩和使用微信压缩的压缩比例,发现压缩效果和微信差不多!这是相当逆天的效果!有了这个库,其它的压缩库基本可以放一边了!

字节跳动面试:这份字节跳动历年校招Android面试真题解析,建议收藏

前言 这篇文章主要是分享今年面试心得,现已就职于某大厂有三个月了,近期有很多公司均已启动秋招,也祝大家面试顺利,获得理想的offer! 之前找工作的那段时间感想颇多,总结一点面试经验和人生思考分享给大家。 正文 这份资料,反正兜兜转转耗时3个月,在我和我一群朋友的努力以及那个傻子的催促下,终于做出来了。这份高级的闪亮的,耗费我无数心血的面试杀手锏,终于面世了,太不容易了一把辛酸泪! 接下来,给大家说说,为什么一份资料,居然做了3个月,因为这是,我拜托我在美团,腾讯,百度,网易云…的一些朋友和我一起搜集的,

868

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1447

Android微信分享图片大于32k进行压缩

微信分享视频的时候,需要传一个图片数组,大小不能大于32k。 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: <span style="font-size:14px;">package com.example.test; import java.io.ByteArrayOutputStream; import ja...

dengshuo4753的博客 808

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1441

Proteus一体化安装STC15库添加

Proteus一体化安装与STC15库添加指南 本文详细介绍了Proteus 8.9 SP2专业版的一体化安装流程和STC15系列单片机库文件的添加方法。安装过程简单快捷,无需破解,稳定性好。通过将两个库文件(Lib和LIB)复制到Proteus安装目录的DATA/LIBRARY文件夹中,即可实现STC15W4K32S4芯片的仿真功能。文中还提供了新建工程和器件放置的步骤说明,特别指出STC15W4K32S4芯片可兼容仿真其他STC15系列芯片,并附带下载链接获取资源。该教程适用于电子设计初学者和开发者。

#法外狂徒张三的博客 4万+

Android集成微信分享,由于分享的缩略图大于32K,而无法调起微信客户端

在项目中集成微信分享功能,分享的是一个链接,带有图片和标题。 按照微信开放平台网页类型分享示例,进行代码编写,但是点击分享 始终无法调起微信客户端。 /** * 微信分享到好友(聊天界面) */ public static void wechatShareToSceneSession(String webpageUrl, String title, String d

殇神马的博客 1万+

SAP Fiori 会话超时全解析:从 Launchpad 到 Identity Authentication 的统一策略

SAP Fiori会话超时机制解析与配置策略 本文深入探讨SAP Fiori项目中的会话超时机制,分析其对系统安全和用户体验的双重影响。文章系统拆解了SAP Fiori Launchpad与SAP Cloud Identity Services之间的会话超时工作原理,重点介绍了两种超时机制:服务器驱动的超时(通过SESSION_TIMEOUT_STOP_DATA_REFRESH参数控制)和UI驱动的超时(通过SESSION_TIMEOUT_INTERVAL_IN_MINUTES参数控制)。文中结合制造业产线

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

Android 图片压缩的几种方法

当图片太大不满足需求时,需要对图片进行裁剪压缩处理,常用的压缩处理接口主要有三种:质量压缩法,尺寸压缩法,缩略图压缩法和等比例压缩法,具体代码如下: /** * 图片压缩的方法 */ public class BitmapUtils { /** * 图片压缩:质量压缩方法 * @param beforBitmap 要压缩的图片 * @return 压缩后的图片 */ static private Bitmap compressImage(Bitm

casual_clover的博客 4443

[Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 2万+

YOLO模型从10MB瘦到2MB!剪枝+INT8量化双方案(精度损失<1%,附部署代码)

摘要:本文介绍了一种针对边缘设备的YOLO模型轻量化方案,通过"结构化剪枝+INT8量化"组合技术,将YOLOv8n模型从6.4MB压缩至2MB,体积减少68.75%,推理速度提升80%,同时保持精度损失小于1%。文章详细讲解了剪枝工具选择、通道剪枝实现、量化校准等关键步骤,并提供了完整的代码示例。特别强调了剪枝保留率、校准集使用、微调必要性等实践要点,帮助开发者在树莓派等资源受限设备上实现高效目标检测。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 756

微信分享 Android 11

ImageUtils.compressBitmap 构建缩略图 是bitmap转成字节而已,网上很多例子,转换的时候进行压缩。screenshotsDir.exists()) { //如果该文件夹不存在,则进行创建。context.grantUriPermission("com.tencent.mm", // 这里填微信包名。thumbData 如果发到微信的图不清晰,图片尺寸设置的不要太小,可以质量压缩的低点。要与`AndroidManifest.xml`里配置的`authorities`一致。

whs867712232的博客 1305

信息传输仿真:卫星通信系统仿真_(12).基于SystemVue的卫星通信仿真

SystemVue是Cadence公司开发的一款用于系统级设计和仿真的软件工具。它主要用于无线通信系统的设计和验证,特别是在卫星通信、雷达、射频和微波通信等领域。SystemVue提供了一个集成的环境,用户可以通过拖拽和连接各种预定义的模块来构建复杂的通信系统模型,从而进行性能分析和优化。

2401_87715305的博客 1370

Android最全Android微信分享图片按质量压缩的解决方案,2024年最新安卓资深架构师分享学习经验及总结

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。面试过程一定要有礼貌!

2301_82243523的博客 1163

yolov26改进 | 融合改进篇 | 轻量级移动端网络ShuffleNetV2融合CCFM参数量仅百万(附代码+修改教程)

本文介绍ShuffleNetV2与跨尺度特征融合模块CCFM融合改进的YOLOv26。ShuffleNetV2以硬件效率为导向,通过通道分割、轻量卷积和Channel Shuffle减少冗余计算与内存访问,在降低参数量和GFLOPs的同时保持高效特征提取;CCFM进一步加强不同尺度特征交互,弥补轻量主干语义表达不足的问题。本人在轻量模型上测试后,参数量和计算量明显下降,检测精度有一定提升,适合移动端、边缘设备及实时检测任务。文中提供完整代码、配置文件、模块注册及Codex修改思路,方便复现、对比和二次创新。

Snu77的博客 198

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android微信分享图片压缩,Android微信分享图片按质量压缩的解决方案

一、杂谈微信分享图片的迷之bug,前一阵子接盘一个Hybrid App,分享要用原生的分享,搞了一阵子把微信分享搞上,测试又反馈了一个谜一样的Bug,我这边看Log打印了checkArgs fail, thumbData is invalid,google一番都说是图片不能超过32kb,在分享里面看到如下判断this.thumbData.length > '耀',一时间没有反应过来。。。可是...

weixin_29479561的博客 806

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android微信分享图片按质量压缩的解决方案

*其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。这么重要的事情说三遍啦!

2401_84132589的博客 553

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android图片分享问题采坑总结

我们项目中经常会用到微信分享,好友分享,朋友圈分享,收藏等功能,虽然开发了很多遍可能还是遇到各种问题,今天主要整理我在开发中遇到的问题; 1.分享图片问题 开发者在 App 中在集成微信 SDK 后,可调用接口实现,依次支持文字、图片、音乐、视频、网页、小程序类型分享,分享支持参考如下:WXMediaMessage (微信媒体消息内容)说明 | 微信开放文档; 今天主要讲讲图片分享我遇到的一些问题,首先了解分享图片的限制如下: WXMediaMessage (微信媒体消息内容)说明 字段 类

Tiger的专栏 2158

关于Android开发不能调起微信分享可能原因

如果你的应用开发时遇到不能调起微信分享功能,请检查以下问题: 检查是否使用的是签名包,非签名包不能调试微信分享功能 检查是否有自定义分享缩略图(thumbData),如果有,检查自定义缩略图的大小,微信规定自定义缩略图大小不能超过32kb 检查是否有自定义描述内容(description),如果有,检查description的长度,微信限制description长度不得超过1024 关于微信分享的其

Lucky_jhf的博客 6205

微信分享失败之【checkArgs fail, thumbData is invalid】

这是图片的问题,微信分享图片大小限制为32kb,超过32KB的图片,会造成微信分享界面打不开(没反应),而且微信不给任何提示,有时候真的很无语。 MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid MicroMsg.SDK.WXApiImplV10: sendReq checkArgs fail 解...

小凌的专栏 1359

微信分享出错问题,MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid

之前做了个微信分享,隔了一段时间突然发现提示下面错误: MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid MicroMsg.SDK.WXApiImplV10: sendReq checkArgs fail 网上查询了目前看到两种解决方法: 1、分享图片大小不能大于32kb。 2、

学无止境 7524

微信分享失败

转载: checkArgs fail, thumbData is invalid sendReq checkArgs fail

hqfok的博客 3498

Android 在已有工程中实现微信图片压缩

这个我们需要自己去编译,但是已经有人帮我们编译好了,压缩算法也已经实现,因此,我们去下载然后编译即可:https://github.com/bither/bither-android-lib 首先将上面下载好的已经编译好的libjpeg放到jni目录下,将下图内容都放到jni目录中: 安装好ndk以后,直接输入ndk-build即可。接下来就会编译生成生成两个文件夹及文件夹中的arm下的动态库 ...

weixin_34238633的博客 643

Android 比较完美 图片压缩方法

多种压缩方式常用的有尺寸压缩、质量压缩以及通过JNI调用libjpeg库来进行压缩,三种方式结合使用实现指定图片内存大小,清晰度达到最优,下面就先分别介绍下这几种压缩方式 1. 质量压缩 设置bitmap options属性,降低图片的质量,像素不会减少 第一个参数为需要压缩的bitmap图片对象,第二个参数为压缩后图片保存的位置 设置options 属性0-100

sinat_30058101的博客 988
上一篇: Android远程弹窗,Remote Desktop(远程桌面)Android平台远程电脑的又一神器!
下一篇: 鸿蒙os正式版推送时间,鸿蒙OS正式版推送时间确定,游戏性能更强,流畅度稳定性均提升...
weixin_39655993
博客等级 码龄9年 36粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值