Android Bitmap压缩方式分析
短信预约 -IT技能 免费直播动态提醒
Android Bitmap压缩方式分析
在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手机拍照都能达到3M左右了,尺寸压缩一般可用于生成缩略图。
在Android开发中我们都会遇到在一个100*100的ImageView上显示一张过大的图片,如果直接把这张图片显示上去对我们应用没有一点好处反而存在OOM的危险,所以我们有必要采用一种有效压缩方式来显示上去。
private void calculateBitmapInSimpleSize() { Bitmap _bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg_homepage); getBitmapDatas(_bitmap); BitmapFactory.Options optioins = new BitmapFactory.Options(); optioins.inJustDecodeBounds = true;// optioins.inPreferredConfig = Bitmap.Config.RGB_565;//11158560 optioins.inPreferredConfig = Bitmap.Config.ARGB_8888;//22317120 BitmapFactory.decodeResource(getResources(), R.drawable.bg_homepage, optioins); int reqWidth = optioins.outWidth; int reqHeight = optioins.outHeight; Log.w(TAG, "reqWidth = " + reqWidth); Log.w(TAG, "reqHeight = " + reqHeight); int inSampleSize = 1; final int widthRatio = Math.round((float)reqWidth / 100f); final int heigthRatio = Math.round((float) reqHeight / 100f); // 取最小值 这将保证压缩出来的图片大于或者等于请求的宽度或者高度 inSampleSize = widthRatio > heigthRatio ? heigthRatio : widthRatio; Log.w(TAG, "first inSampleSize = " + inSampleSize); final int totalPixel = 100 * 100; final int totalReqPixel = reqWidth * reqHeight * 2; Log.w(TAG, "totalReqPixel = " + totalReqPixel); while (totalPixel / (inSampleSize * inSampleSize) > totalReqPixel) { Log.w(TAG, "totalPixel = " + (totalPixel / (inSampleSize * inSampleSize))); inSampleSize ++; } Log.w(TAG, "LastInSampleSize = " + inSampleSize); optioins.inJustDecodeBounds = false; Bitmap lastBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg_homepage, optioins); getBitmapDatas(lastBitmap); mImageView.setImageBitmap(lastBitmap); }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
Android Bitmap压缩方式分析
下载Word文档到电脑,方便收藏和打印~
下载Word文档
猜你喜欢
Android Bitmap压缩方式分析
Android Bitmap压缩方式分析在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手
2023-05-30
Android实现图片压缩(bitmap的六种压缩方式)
Android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:
图片长度 x 图片宽度 x 一个像素点占用的字节数
以下是图片的压缩格式:其中,A代表透明
2022-06-06
2024-04-02
Android Bitmap压缩方法的选择详解
刚刚修改Bug碰到了一个问题,先描述一下问题。
1.测试说分享文章到微信失败,QQ成功。定位到微信分享接口。2.分享其它文章到微信成功。接口有问题!差点就找接口了,还好没3.断点微信分享,发现突然压缩失败。代码写法问题,下面会分解4.找到原
2022-06-06
android bitmap compress(图片压缩)代码
android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片。有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,那么就上传就会很慢(在有些网络情况下),而且很耗流量,要想速度快,那么就需要减小图片的大小。减
2022-06-06
详解android 通过uri获取bitmap图片并压缩
详解android 通过uri获取bitmap图片并压缩很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下:Uri mImageCaptureUri = data.getD
2023-05-30
2024-04-02
Linux中bz2压缩格式的示例分析
这篇文章主要介绍Linux中bz2压缩格式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux中的bz2压缩格式的实例详解一 语法bzip2 源文件压缩为bz2格式,不保存源文件bzip2 -k 源文件
2023-06-09
2024-04-02
Linux分卷压缩与解压缩的方法
这篇文章主要讲解了“Linux分卷压缩与解压缩的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux分卷压缩与解压缩的方法”吧!1.举例说明:要将目录logs打包压缩并分割成多个1M
2023-06-05
android中Bitmap用法(显示,保存,缩放,旋转)实例分析
本文实例讲述了android中Bitmap用法。分享给大家供大家参考。具体如下:
在Android SDK中可以支持的图片格式如下:png , jpg , gif和bmp。
1.Bitmap的创建
借助于BitmapFactory。
1)资
2022-06-06
2024-04-02
Android实现zip文件压缩及解压缩的方法
本文实例讲述了Android实现zip文件压缩及解压缩的方法。分享给大家供大家参考。具体如下:
DirTraversal.java如下:package com.once;
import java.io.File;
import java.u
2022-06-06
Android常见的图片压缩方式有哪些
小编给大家分享一下Android常见的图片压缩方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先给出一组数据原图:width:2976; height:2976原图实际:--->byte:2299820 Mb:2.
2023-06-15
2024-04-02
Android中Bitmap用法实例分析
本文实例讲述了Android中Bitmap用法。分享给大家供大家参考,具体如下:
一般在android程序中把图片文件放在res/drawable目录下就可以通过R.drawable.id来使用,但在存储卡中的图片怎样引用呢?下面通过实现这
2022-06-06
2024-04-02
Linux中有哪些压缩格式的压缩与解压方法
Linux中有哪些压缩格式的压缩与解压方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于P
2023-06-09
Linux下常用压缩格式的压缩与解压方法详解
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
-----------------------------------------
2022-06-03
2024-04-02