============问题描述============
我在写一个图片压缩的方法,因为要上传到服务器,所以图片不可以过大。
网上的这些方法也都烂了,可是都不怎么管用。比如我现在使用的。
我在这个循环里设置了,如果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