一、图片质量压缩
/**
* 质量压缩方法
* @param image
* @return
*/
public static Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
int options = 90;
while (baos.toByteArray().length / 1024 > 100) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩
baos.reset(); // 重置baos即清空baos
image.compress(Bitmap.CompressFormat.JPEG, options, baos);// 这里压缩options%,把压缩后的数据存放到baos中
options -= 10;// 每次都减少10
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());// 把压缩后的数据baos存放到ByteArrayInputStream中
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);// 把ByteArrayInputStream数据生成图片
return bitmap;
}
二、按比例大小压缩 (路径获取图片)
/**
* 图片按比例大小压缩方法
* @param srcPath (根据路径获取图片并压缩)
* @return
*/
public static Bitmap getimage(String srcPath) {
BitmapFactory.Options newOpts = new BitmapFactory.Options();
// 开始读入图片,此时把options.inJustDecodeBounds 设回true了
newOpts.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(srcPath, newOpts);// 此时返回bm为空
newOpts.inJustDecodeBounds = false;
int w = newOpts.outWidth;
int h = newOpts.outHeight;
// 现在主流手机比较多是800*480分辨率,所以高和宽我们设置为
float hh = 800f;// 这里设置高度为800f
float ww = 480f;// 这里设置宽度为480f
// 缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
int be = 1;// be=1表示不缩放
if (w > h && w > ww) {// 如果宽度大的话根据宽度固定大小缩放
be = (int) (newOpts.outWidth / ww);
} else if (w < h && h > hh) {// 如果高度高的话根据宽度固定大小缩放
be = (int) (newOpts.outHeight / hh);
}
if (be <= 0)
be = 1;
newOpts.inSampleSize = be;// 设置缩放比例
// 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了
bitmap = BitmapFactory.decodeFile(srcPath, newOpts);
return compressImage(bitmap);// 压缩好比例大小后再进行质量压缩
}
三、按比例大小压缩 (Bitmap)
/**
* 图片按比例大小压缩方法
* @param image (根据Bitmap图片压缩)
* @return
*/
public static Bitmap compressScale(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
// 判断如果图片大于1M,进行压缩避免在生成图片(BitmapFactory.decodeStream)时溢出
if (baos.toByteArray().length / 1024 > 1024) {
baos.reset();// 重置baos即清空baos
image.compress(Bitmap.CompressFormat.JPEG, 80, baos);// 这里压缩50%,把压缩后的数据存放到baos中
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
BitmapFactory.Options newOpts = new BitmapFactory.Options();
// 开始读入图片,此时把options.inJustDecodeBounds 设回true了
newOpts.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);
newOpts.inJustDecodeBounds = false;
int w = newOpts.outWidth;
int h = newOpts.outHeight;
Log.i(TAG, w + "---------------" + h);
// 现在主流手机比较多是800*480分辨率,所以高和宽我们设置为
// float hh = 800f;// 这里设置高度为800f
// float ww = 480f;// 这里设置宽度为480f
float hh = 512f;
float ww = 512f;
// 缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
int be = 1;// be=1表示不缩放
if (w > h && w > ww) {// 如果宽度大的话根据宽度固定大小缩放
be = (int) (newOpts.outWidth / ww);
} else if (w < h && h > hh) { // 如果高度高的话根据高度固定大小缩放
be = (int) (newOpts.outHeight / hh);
}
if (be <= 0)
be = 1;
newOpts.inSampleSize = be; // 设置缩放比例
// newOpts.inPreferredConfig = Config.RGB_565;//降低图片从ARGB888到RGB565
// 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了
isBm = new ByteArrayInputStream(baos.toByteArray());
bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);
return compressImage(bitmap);// 压缩好比例大小后再进行质量压缩
//return bitmap;
}
以上所述是小编给大家介绍的Android图片压缩方法并压缩到指定大小,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 图片压缩到指定大小
# 图片压缩
# Android实现图片压缩(bitmap的六种压缩方式)
# Android开发之图片压缩实现方法分析
# Android图片压缩几种方式总结
# Android开发实现图片大小与质量压缩及保存
# 按比例
# 其中一个
# 比较多
# 设置为
# 小编
# 清空
# 度高
# 以高
# 在此
# 给大家
# 每次都
# 所述
# 给我留言
# 感谢大家
# 为空
# 疑问请
# 有任何
# isBm
# int
# JPEG
相关文章:
建站三合一如何选?哪家性价比更高?
如何选择网络建站服务器?高效建站必看指南
广州营销型建站服务商推荐:技术优势与SEO优化解析
建设网站制作价格,怎样建立自己的公司网站?
网站网页制作专业公司,怎样制作自己的网页?
如何快速搭建个人网站并优化SEO?
简历在线制作网站免费版,如何创建个人简历?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
建站主机是什么?如何选择适合的建站主机?
无锡营销型网站制作公司,无锡网选车牌流程?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何快速搭建自助建站会员专属系统?
如何选择服务器才能高效搭建专属网站?
如何通过西部数码建站助手快速创建专业网站?
如何在景安服务器上快速搭建个人网站?
如何在香港免费服务器上快速搭建网站?
C++如何编写函数模板?(泛型编程入门)
建站之星如何修改网站生成路径?
如何在万网自助建站中设置域名及备案?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
魔毅自助建站系统:模板定制与SEO优化一键生成指南
seo网站制作优化,网站SEO优化步骤有哪些?
广东企业建站网站优化与SEO营销核心策略指南
建站之星与建站宝盒如何选择最佳方案?
如何配置WinSCP新建站点的密钥验证步骤?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
常州自助建站工具推荐:低成本搭建与模板选择技巧
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
建站之星CMS五站合一模板配置与SEO优化指南
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
,怎么用自己头像做动态表情包?
北京网站制作公司哪家好一点,北京租房网站有哪些?
营销式网站制作方案,销售哪个网站招聘效果最好?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
宝塔建站后网页无法访问如何解决?
制作电商网页,电商供应链怎么做?
如何在Golang中使用replace替换模块_指定本地或远程路径
江苏网站制作公司有哪些,江苏书法考级官方网站?
宝塔建站助手安装配置与建站模板使用全流程解析
Python路径拼接规范_跨平台处理说明【指导】
,在苏州找工作,上哪个网站比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。