位置: 编程技术 - 正文

开发日记(3)转发:比较靠谱的图片压缩(开发日记3雷火剑)

发布时间:2024-02-27

推荐整理分享开发日记(3)转发:比较靠谱的图片压缩(开发日记3雷火剑),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:开发日记日语翻译,开发日记3雷火剑,开发日记三步曲,开发日记3OVA,开发日记3OVA,开发日记3OVA,开发日记日文翻译,开发日记日文翻译,内容如对您有帮助,希望把文章链接给更多的朋友!

第一:我们先看下质量压缩方法:

Java代码 private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, , baos);//质量压缩方法,这里表示不压缩,把压缩后的数据存放到baos中 int options = ; while ( baos.toByteArray().length / >) { //循环判断如果压缩后图片是否大于kb,大于继续压缩 baos.reset();//重置baos即清空baos image.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中 options -= ;//每次都减少 } ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中 Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片 return bitmap; }

第二:图片按比例大小压缩方法(根据路径获取图片并压缩):

开发日记(3)转发:比较靠谱的图片压缩(开发日记3雷火剑)

Java代码 private 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; //现在主流手机比较多是*分辨率,所以高和宽我们设置为 float hh = f;//这里设置高度为f float ww = f;//这里设置宽度为f //缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可 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图片压缩):

Java代码 private Bitmap comp(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, , baos); if( baos.toByteArray().length / >) {//判断如果图片大于1M,进行压缩避免在生成图片(BitmapFactory.decodeStream)时溢出 baos.reset();//重置baos即清空baos image.compress(Bitmap.CompressFormat.JPEG, , baos);//这里压缩%,把压缩后的数据存放到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; //现在主流手机比较多是*分辨率,所以高和宽我们设置为 float hh = f;//这里设置高度为f float ww = f;//这里设置宽度为f //缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可 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了 isBm = new ByteArrayInputStream(baos.toByteArray()); bitmap = BitmapFactory.decodeStream(isBm, null, newOpts); return compressImage(bitmap);//压缩好比例大小后再进行质量压缩 }

[Xutils]安卓框架的学习之路 开发用别人框架蛋疼又木有,而且还是初级程序员这种,关于Xutils已经无力吐槽了。网上一搜基本上全是复制的模版统一一样,心痛有木有!@!!!!

欢迎使用CSDN-markdown编辑器 原文出处:

如何在Android上编写高效的Java代码 转自:

标签: 开发日记3雷火剑

本文链接地址:https://www.jiuchutong.com/biancheng/382286.html 转载请保留说明!

上一篇:Android四大组件之一:contentprovider & 三大存储方式之一:SQLite数据库存储 应用实例(android四大组件面试)

下一篇:[Xutils]安卓框架的学习之路(安卓框架是什么怎么用)

  • 投资者投入固定资产的合同或协议约定
  • 税收负担影响企业的利润吗
  • 汇票签收后可以撤回吗
  • 月末计提无形资产的折旧
  • 住宿费进项税分录
  • 为什么租赁只能20年
  • 发放代扣代缴个人所得税分录
  • 子公司的实收资本合并报表怎么做
  • 报关单金额大于合同金额
  • 收到电子承兑汇票的账务处理
  • 应交税费是什么科目借贷方向
  • 月工资和账户工资区别
  • 工资表是放在计提还是发放
  • 在建工程暂估入库的账务处理
  • 个人工程款税怎么开
  • 电子税务局怎么查看已开发票
  • 计提减值的固定资产处置
  • 交易性金融资产属于什么类
  • 个税汇算清缴包含退休金吗
  • windows11ie
  • php开源软件
  • win10新装系统我的电脑在哪
  • 一次性支付一年租金怎么做账
  • neoDVD.exe - neoDVD是什么进程 有什么用
  • info是什么软件
  • 单反镜头直径越大是不是就越好
  • php time
  • 资本化计入
  • Uncaught TypeError TypeError: Cannot set properties of null (setting ‘onclick‘)的解决办法
  • php 生成opcode
  • 国有划拨土地给集体企业怎么办
  • php文件包含目录文件吗
  • redis设置内存淘汰策略
  • 机票报销属于什么费
  • 保姆级官方yolov7的训练自己的数据集以及项目部署
  • yolov5 libtorch
  • 包含个人社保的保险
  • 企业应付职工薪酬
  • 将织梦dedecms转换到wordpress
  • c语言realloc函数的用法
  • mongodb从入门到商业实战
  • 关于进项票少的解决方案
  • 销售货物未收到货款的会计分录怎么写
  • 蔬菜开发票到哪里开呢?
  • 土地入固定资产计提折旧吗
  • 投资者控股性质
  • 资产负债表和利润表的认定
  • 含税含运费价格,运费谁出
  • 小规模纳税人怎么申报增值税报表
  • 其他应收款余额在贷方什么意思
  • 税控盘的费用做什么会计科目
  • 多提税金的具体分录
  • 没有销售怎么写总结
  • 预付卡销售和充值怎么做账
  • 一般企业报税的税种
  • 银行发行理财产品的流程
  • 委托设置什么意思
  • linux内核构成
  • 解决windows hello人脸识别找不到摄像头
  • centos添加用户到组
  • 优盘安装xp
  • linux用户权限管理
  • win8.1网络不可用怎么办
  • linux的tar命令用法
  • window10路由
  • 如何快速破局
  • react-native-navigation
  • java美化按钮
  • [置顶] [笔记]
  • html中href,src区别
  • jqueryanimate动画
  • jquery删除节点的元素
  • 如何用unity
  • javascript获取css
  • linux shell命令的返回值
  • linux 打包
  • unity导出ios项目到iphone
  • js菜鸟编程
  • 广东省国家税务总局稽查局局长
  • 印花税怎么计提科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号