求助一个问题,100分,我也没多少分了。

============问题描述============

我在写一个图片压缩的方法,因为要上传到服务器,所以图片不可以过大。

网上的这些方法也都烂了,可是都不怎么管用。比如我现在使用的。

我在这个循环里设置了,如果baos.toByteArray().length / 1024>50成立,就继续压缩。

可是我设置段点之后,发现baos.toByteArray().length / 1024已经运行到小于50了,然后返回这个bitmap。当我上传到服务器的时候,图片竟然是二三百K,我想问问大家有没有懂的,帮我一下。

或者哪位朋友有好的图片压缩方法给我一个。

ByteArrayOutputStream baos = new ByteArrayOutputStream();

		image.compress(Bitmap.CompressFormat.JPEG, 100, baos);

		int options = 100;

		while ( baos.toByteArray().length / 1024>50) {

			baos.reset();

			options -= 10;	

			image.compress(Bitmap.CompressFormat.JPEG, options, baos);

		}

		ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());

		Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);

		return bitmap;

我不需要图片宽高的那种压缩,我只想要一张图片在不让它失真太严重的情况下,能压缩到50k以下。实在不行100k以内也可以。但是不要失真太严重

============解决方案1============

上传前

压缩前1024x768

压缩后1024x768

上传后

用搜狗浏览器预览图片右键点击图片选择图片属性

大小 41060 字节

维度 773   x   580   pixels

选择图片下载到桌面

文件大小68.1K

尺寸1024 X768

时间: 2024-10-06 01:09:48

求助一个问题,100分,我也没多少分了。的相关文章

PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

Python 练习 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的数,屏幕显示"太大了,请重新输入"如果小于预设的数,屏幕显示"太小了,请重新输入"如此循环,直到猜中,显示"恭喜你,猜中了!共猜了N次"N为用户猜测次数. 答案: import random def guess_number(): true_num = random.randint(1, 100) user_n

IO多路复用, 基于IO多路复用+socket实现并发请求(一个线程100个请求), 协程

一. IO多路复用 IO多路复用作用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写) 二. 基于IO多路复用+socket实现并发请求(一个线程100个请求) IO多路复用 socket非阻塞 基于事件循环实现的异步非阻塞框架:aaaa.py 非阻塞:不等待 异步:执行完某个任务后自动调用我给他的函数. Python中开源 基于事件循环实现的异步非阻塞框架 Twisted # aaaa.py import socket import select cla

【分库、分表】MySQL分库分表方案

一.Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性.表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行.行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作. 2. mysql proxy:amoeba 做mysql集群,利用amoeba. 从上层的ja

mysql分表方法-----MRG_MyISAM引擎分表法

一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法.目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事务和外键,我还不是很了解. 首先,我们需要想好到底分多少个表,前提当然是满足应用.这里我使用了一个比较简单的分表方法,就是根据自增id的尾数来分,也就是说分0-9一共10个表,其取值也很好做,就是对10进行取模.另外,还可以根据某一字段的md5值取其中几位进行分表,这样的话,可以分的表就很多了. 好了,先来创建表吧,

HTML高级标签(2)————窗口分帧(1)————分帧演示

我们可以简单的编写一个多帧的窗口,并且可以任意的划分窗口区域. <frameset rows="*,*,*"> <frameset cols="*,*"> <frame src="http://www.baidu.com"> <frame src="http://www.csdn.net"> </frameset> <frameset cols="*,

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计?

MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计? 昨天面试新人的时候,遇到了这么一个问题,按照自己的想法大体聊了一些,但大多是感性的,并没有完整的了解why and how. 今天查了一些相关的资料,包括<MySQL性能调优与架构设计>.<高性能Mysql>,慢慢的整体理解,请大家指正. 之一,为什么要分表? 分表,按形式,有水平分表和主附分表.水平分表常见于按ID取模或者按日期将相同表结构的内容散列到不同的表上,主附分表常见于有对应关系的多张表,通过

一个被不点名批评的垃圾骗分暴力选手被普及难度的省选信心(??)模拟赛艹爆的题解

如果真是这种实力去什么省选啊,浪费钱浪费名额浪费时间,不如退役充当编程爱好者打网站,回去搞课内弃理从文刷刷计算题好歹成绩还好看一点 精神状态很好,也没有任何不适,几乎在正常考试都保持了挺高的精神集中,这样都垫底真是f**k ---------考场上的废柴发挥----------- 昨晚见到OZY,得知输出样例有分不会爆零太好了心情极佳,然而题怎么******* (自从那天开始满脑子都是暴力骗分的yzh) 早上先看了半个小时题目,感觉t1就是签到找规律,t2一眼暴力+KM40分美滋滋,正解怕是在t

微信居然有这么一个贴心功能,你一定没发现!

一般我们的微信账号很少登出,所以时间久了一旦需要用到微信密码,很有可能已经忘记了,而小编最近发现了一个微信新功能:声音锁,让你即使不记得密码也没有关系了!下面大家跟着小编一起来学习一下,提高逼格吧! 具体步骤是这样的—— 1找到“设置”功能,点击进入 2点击“账号与安全” 3点击“声音锁” 4屏幕上会出现8个数字,按要求按住按钮,贴近手机下方话筒,匀速读出数字 5按“下一步” 6重念一遍8个数字(两遍语速和语气请尽量保持一致,以免设置失败) 7设置完成!赶紧去尝试验证吧! 8退出登录后,下次登录

在自己的应用中启动另外一个应用,随便说一下,发现一个秘密,就是当应用没退出的时候,启动就会变成关闭!!!

// Intent intent = new Intent(); // PackageManager packageManager = context.getPackageManager(); // intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RES