当前位置: 首页 > news >正文

Android Bitmap压缩

Android View截屏长图拼接(RecyclerView)

我们在实际使用中,往往图片转化成Bitmap,对Bitmap操作的时候(如:截屏分享等),可能Bitmap会过大,导致无视实现对应功能。那么我们就需要对Bitmap进行压缩处理。

 public static Bitmap compressBitmap(Bitmap bitmap, int maxSize) {Bitmap newBitmap;ByteArrayOutputStream baos = new ByteArrayOutputStream();// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());BitmapFactory.Options newOpts = new BitmapFactory.Options();newOpts.inJustDecodeBounds = false;//为true的时候表示只读边,不读内容newOpts.inPurgeable = true;// 同时设置才会有效newOpts.inInputShareable = true;//当系统内存不够时候图片自动被回收// Do not compressnewOpts.inPreferredConfig = Bitmap.Config.RGB_565;//如果使用ARGB-8888连续压缩两个10M图分分钟oom,而使用4444比565还糊。。long length = baos.toByteArray().length;if (length / 1024 > 4 * 1024) {int a = 2;while (length / 1024 / a > 4 * 1024) {a = a + 1;}newOpts.inSampleSize = a;} else {newOpts.inSampleSize = 1;}newBitmap = BitmapFactory.decodeStream(inputStream, new Rect(), newOpts);if (maxSize > 100) {ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int options = 100;newBitmap.compress(Bitmap.CompressFormat.PNG, options, byteArrayOutputStream);if (byteArrayOutputStream.toByteArray().length / 1024 > maxSize) {while (byteArrayOutputStream.toByteArray().length / 1024 > maxSize) {// Clean up osbyteArrayOutputStream.reset();// interval 10options -= 5;newBitmap.compress(Bitmap.CompressFormat.PNG, options, byteArrayOutputStream);}byte[] bytes = byteArrayOutputStream.toByteArray();newBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);}FileFileUtils.closeSilently(byteArrayOutputStream);}FileFileUtils.closeSilently(baos);FileFileUtils.closeSilently(inputStream);return newBitmap;}public static void closeSilently(Closeable c) {if (c == null) return;try {c.close();} catch (Throwable t) {// Do nothing}}

相关文章:

Android Bitmap压缩

Android View截屏长图拼接(RecyclerView) 我们在实际使用中,往往图片转化成Bitmap,对Bitmap操作的时候(如:截屏分享等),可能Bitmap会过大,导致无视实现对应功能。那么我们就需要对B…...

不同子网络中的通信过程

从输入www.baidu.com经历了什么 一、DNS(网址->IP) 二、ARP(IP->MAC) A->B:有数据发送,数据封装ip之后发现没有主机B的mac地址。然后ARP在本网段广播:检查目标地址和源地址是否在同一…...

Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X

导读UBports 基金会近日宣布为基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Ubuntu Touch 移动操作系统发布并全面提供 OTA-2 软件更新。 Ubuntu Touch OTA-2 在首次 OTA 更新整整四个月后发布,支持新设备,包括 Fairphone 3、F(x)tec Pro1 X 和 Vollaphone X…...

【网络】数据链路层——MAC帧协议 | ARP协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 来到数据链路层后,完整的数据被叫做数据帧,习惯上称之为MAC帧。 MAC帧协议 | A…...

【Spring Boot】Spring Boot自动加载机制:简化应用程序的启动

在微服务盛行的今天,快速搭建和启动应用程序变得至关重要。Spring Boot作为Java生态系统中主流的框架,其自动加载机制使得开发者能够快速构建和启动应用程序。本文将详细介绍Spring Boot的自动加载机制,并通过代码示例加以说明。 首先&#…...

centos7搭建apache作为文件站后,其他人无法访问解决办法

在公司内网的一个虚拟机上搭建了httpsd服务,准备作为内部小伙伴们的文件站,但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因,排查步骤如下: 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.…...

【开个空调】语音识别+红外发射

废话少说,直接上空调板子:YAPOF3。红外接收发射模块用的某宝上发现的YF-33(遗憾解码还没搞清楚,不然做个lirc.conf功能才多)。最后是语音识别用的幻尔的,某宝自然也有,它是个i2c的接口。 本篇胡说八道其实纯粹为了留个…...

【hibernate validator】(二)声明和验证Bean约束

首发博客地址 https://blog.zysicyj.top/ 一、声明bean约束 1. 字段级别约束 不支持静态类型字段 验证引擎直接访问实例变量,不会调用属性的访问器 在验证字节码增强的对象时,应适用属性级别约束,因为字节码增库无法通过反射确定字段访问 pac…...

Redis持久化机制之RDB,AOF与混合AOF

Redis是一款高性能的NoSQL数据库,它的速度非常快,同时也支持多种持久化机制,其中最常用的是RDB和AOF,还有一种混合AOF方式。那么这些持久化机制到底是什么,有什么不同呢? RDB是Redis默认的持久化方式&…...

为啥外卖小哥宁愿600一月租电动车,也不花2、3千买一辆送外卖!背后的原因......

大家好!我是菜哥! 又到周末了,我们聊点非技术的东西。最近知乎“为何那些穿梭于城市大街小巷的外卖小哥,宁愿每月掏出600块租一辆电动车,也不愿意掏出2、3千买一辆呢?” 冲上热榜! 听起来有点“…...

分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库

本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能&…...

Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇

大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。 我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇 如同个人电脑一样&#xff0…...

Day46|leetcode 139.单词拆分

leetcode 139.单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) 视频链接:动态规划之完全背包,你的背包如何装满?| LeetCode:139.单词拆分_哔哩哔哩_bilibili 题目概述 给你一个字符串 s 和一…...

深入理解高并发编程 - Thread 类的 stop () 和 interrupt ()

stop() stop() 方法被用于停止线程。然而,需要注意的是,stop() 方法已经被标记为已废弃(deprecated),并且不推荐使用。这是因为使用该方法可能导致不可预料的问题和数据不一致性,因此它被认为是不安全的。…...

C语言之三子棋游戏实现篇

目录 主函数test.c 菜单函数 选择实现 游戏函数 (函数调用) 打印棋盘数据 打印展示棋盘 玩家下棋 电脑下棋 判断输赢 循环 test.c总代码 头文件&函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码 游戏函数ga…...

jupyter notebook 插件nbextensions的安装

安装步骤: 1、打开 jupyter notebook,新建一个 python 文件; 2、 分别输入以下代码,然后运行,出现 warning 不影响使用,如果出现 errors,则说明下载有问题: !python -m pip install…...

Spring boot 集成单元测试

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> 2. 3.编写测试类 package com.enterprise;import com.enterpr…...

基于C++的QT实现贪吃蛇小游戏

文章目录&#xff1a; 一&#xff1a;效果演示 二&#xff1a;实现思路 三&#xff1a;代码实现 widget.h widget.cpp main.cpp 一&#xff1a;效果演示 效果图◕‿◕✌✌✌ 代码下载 二&#xff1a;实现思路 通过按键控制蛇的移动&#xff0c;每吃一个商品蛇身就会加长…...

Spring Boot整合RabbitMQ之路由模式(Direct)

RabbitMQ中的路由模式&#xff08;Direct模式&#xff09;应该是在实际工作中运用的比较多的一种模式了&#xff0c;这个模式和发布与订阅模式的区别在于路由模式需要有一个routingKey&#xff0c;在配置上&#xff0c;交换机类型需要注入DirectExchange类型的交换机bean对象。…...

行式存储与列式存储

1.概述 数据处理大致可分为两大类&#xff0c;联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。 OLTP是传统关系型数据库的主要应用&#xff0c;用来执行一些基本的、日常的事务处理&#xff0c;比如数据库记录的增、删…...

Legba性能优化技巧:10个实用方法提升暴力破解效率 [特殊字符]

Legba性能优化技巧&#xff1a;10个实用方法提升暴力破解效率 &#x1f680; 【免费下载链接】legba The fastest and more comprehensive multiprotocol credentials bruteforcer / password sprayer and enumerator. &#x1f977; 项目地址: https://gitcode.com/gh_mirro…...

SMARTFORM不同模板一起打印

一、背景由于客户提出发货单要加上条形码打印&#xff0c;条形码单独一个模板&#xff0c;加在后面打印&#xff0c;输出PDF并发送邮件。二、效果展示不同模板一起打印效果如下&#xff0c;建立smartforms的表单时&#xff0c;也使用了两个不同的模板三、smartforms建立表单&am…...

Unity WebGL适配微信小游戏全链路指南

1. 为什么Unity WebGL不能直接扔进微信小游戏&#xff1f;——从“能跑”到“能上线”的认知断层很多人第一次尝试把Unity项目导出WebGL再塞进微信小游戏时&#xff0c;都会经历一个相似的困惑&#xff1a;本地浏览器里好好的3D场景&#xff0c;一放进微信开发者工具就白屏、报…...

1987年6月27日下午13-15点出生性格、运势和命运

1987年6月17日&#xff0c;下午15点到17点之间&#xff0c;正值盛夏时节&#xff0c;阳光炽烈而漫长。这一天出生的孩子&#xff0c;是中国改革开放后“黄金十年”中诞生的又一批弄潮儿。他们的成长轨迹&#xff0c;与全球化浪潮的涌入、市场经济的深化以及互联网的萌芽几乎同步…...

2026年HR推荐的10个专业简历模板网站,从模板到写法

2026年HR推荐的10个专业简历模板网站&#xff0c;从模板到写法写一份让HR眼前一亮的简历&#xff0c;是很多求职者遇到的难题。模板选什么风格、内容怎么写才专业、怎么排版才不会被系统筛掉——这些问题常常让人头疼。这篇文章整理了10个HR推荐的专业简历模板网站&#xff0c;…...

LazyScrollView复用池机制:TMLazyReusePool工作原理深度解析

LazyScrollView复用池机制&#xff1a;TMLazyReusePool工作原理深度解析 【免费下载链接】LazyScrollView An iOS ScrollView to resolve the problem of reusability in views. 项目地址: https://gitcode.com/gh_mirrors/la/LazyScrollView 在iOS开发中&#xff0c;视…...

经手100万+终端后,聊聊校园门锁Sub-1G和Cat.1怎么选

做校园联网门锁项目的人大概都遇到过这个纠结&#xff1a;组网方案到底选Sub-1G还是4G Cat.1&#xff1f;我们团队&#xff08;KEENZY中科易安&#xff09;经手了100万在线终端的运行数据&#xff0c;可以明确地说——两种方案没有绝对的优劣&#xff0c;只有场景是否匹配。选错…...

职场痛点|同事甩锅、摸鱼划水,干活全靠自己?3步破局不内耗

职场痛点&#xff5c;同事甩锅、摸鱼划水&#xff0c;干活全靠自己&#xff1f;3步破局不内耗相信很多职场人都有过这样的崩溃瞬间&#xff1a;明明是团队协作的任务&#xff0c;同事要么全程摸鱼划水&#xff0c;不干活、不配合&#xff0c;要么出了问题就第一时间甩锅&#x…...

初次使用Taotoken从注册到发出第一个API请求的全流程耗时记录

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用Taotoken从注册到发出第一个API请求的全流程耗时记录 1. 流程概览与预期 对于初次接触大模型聚合平台的开发者而言&#…...

5秒极速转换!m4s转换工具:B站缓存视频合并为MP4的完整指南

5秒极速转换&#xff01;m4s转换工具&#xff1a;B站缓存视频合并为MP4的完整指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否在B站缓…...