安卓图片压缩技术(质量压缩和比例压缩)

在MATLAB中将C语言代码转化为可执行的mexw64文件 这样,您可以将高效的C语言算法集成到MATLAB环境中,以便更好地利用MATLAB的功能和特性。请记住,在使用mex转换C语言代码之前,您需要正确编写和测试C语言代码,并确保它与MATLAB的mex接口兼容。MATLAB是一种功能强大的数值计算软件,它提供了一个机制,可以将C语言代码转化为MATLAB可执行的mexw64文件。在上述命令中,"-output"选项指定生成的mex文件的名称,"myfunction"是您选择的名称,"myfunction.c"是要编译的C语言源文件。步骤1:编写C语言代码。 阅读详情

在总结压缩之前,先了解下,安卓中常见的三种图片格式:PEPG,PNG,JPG
JPEG

JPEG(发音为jay-peg, IPA:[ˈdʒeɪpɛg])是一种针对照片视频而广泛使用的一种压缩标准方法。这个名称代表Joint Photographic Experts Group(联合图像专家小组)。

常用的.jpg文件是有损压缩
不支持背景透明
适用于照片等色彩丰富的大图压缩
不适用于logo,线图

GIF

GIF,图像互换格式(GIF,Graphics Interchange Format)是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它采用无损压缩技术,只要图像不多于256色,则可既减少文件的大小,又保持成像的质量。

优秀的压缩算法使其在一定程度上保证图像质量的同时将体积变得很小。
可插入多帧,从而实现动画效果。
可设置透明色。
由于采用了8位压缩,最多只能处理256种颜色,故不宜应用于真彩色图片。

PNG

PNG,便携式网络图形(Portable Network Graphics,PNG)是一种无损压缩的位图图形格式,支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。

支持256色调色板技术以产生小体积文件
最高支持48位真彩色图像以及16位灰度图像。
支持Alpha通道的透明/半透明特性。
支持图像亮度的Gamma校准信息。
支持存储附加文本信息,以保留图像名称、作者、版权、创作时间、注释等信息。
使用无损压缩。
渐近显示和流式读写,适合在网络传输中快速显示预览效果后再展示全貌。
使用CRC防止文件出错。
最新的PNG标准允许在一个文件内存储多幅图像。

Android开发中的切图素材多为.png格式。
BPM

BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。

BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。
WebP

WebP(发音weppy),是一种同时提供了有损压缩与无损压缩的图片文件格式,派生自视频编码格式VP8,是由Google在购买On2 Technologies后发展出来,以BSD授权条款发布。

从官网介绍来看,无损的WebP图片比PNG小26%,有损的WebP图片比JPEG小25-34%,同时,无损WebP支持透明及alpha通道,有损在一定条件下同样支持。

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。

参考自:http://www.cnblogs.com/kodyan/p/5442646.html
1.质量压缩法:
我发现,在质量压缩时,后面几乎压缩的很少了,这是一个5M的照片如图:这里写图片描述
从100%,90%一直到10%,压缩量一次是:3766K–558–203–105–54–42–30–24–20–14,这个就像弹簧一样,越往后压缩越难压缩,压缩10%,和1%相差不大.但是,5M的图片压缩到200K是,图片质量明显下降.
代码:

``` public  void compress(File file){ 
       Log.i("TAG", file.getPath());
       Bitmap bitmap = BitmapFactory.decodeFile(file.getPath());
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
       int pos= 100;
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压
       while(baos.size()/1024>200) {
           Log.i("TAG", baos.size()/1000+"k=============="+pos);
           pos -=10;
           baos.reset();
           bitmap.compress(Bitmap.CompressFormat.JPEG, pos, baos);  
       }
       try {
           FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath()+"/SHMedia/Photos/1234.jpg");
           baos.writeTo(fos);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

   }

2:比例压缩法:
比例压缩法至于两点
1: opts.inJustDecodeBounds = true;// 将该参数设置为 true 则加载器不加载图片, 而是把图片的 out(宽和高)的字段信息取出来
设置完,压缩比例后
opts.inJustDecodeBounds = false;//使用缩放比例进行缩放加载图片,加载器返回图片
2:opts.inSampleSize = 8;设置比例,1-3:是一样的结果,2的1次方;
4-7:压缩结果一样,2的2次方
8-15:压缩结果一样,2的三次方
16-31:压缩结果一样,2的4次方
结论:不足2的整数次方,按整数次方的前一个次方算
实验数据:
原图:2.56M
1-3: 1.42M 压缩倍数:1.66
4-7: 385k 压缩倍数:6.13
8-15:107k 压缩倍数:22
有意思的是:
本来16-31:应该是一样的结果,可是结果出乎意料:
16-24: 33K
24-31:16K
完全不按照套路出牌:在包括16以后的这个段,图片已经严重失真,已经没有意义.

public  void compress1(File file){ 
       BitmapFactory.Options opts = new BitmapFactory.Options();
       // 设置为ture只获取图片大小
         opts.inJustDecodeBounds = true;
         opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
        // 获取到屏幕对象
          Display display = getWindowManager().getDefaultDisplay();
          // 获取到屏幕的真是宽和高
          int screenWidth = display.getWidth();
          int screenHeight = display.getHeight();
          // 计算缩放比例
          int widthScale = opts.outWidth /screenWidth;
          int heightScale = opts.outHeight /screenHeight;
         int samPle = Math.max(widthScale,heightScale);
         opts.inSampleSize = 2;
         opts.inJustDecodeBounds = false;
         Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/SHMedia/Photos/123.jpg", opts);
         try {
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/SHMedia/Photos/123.jpeg")));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
   }
有不足之处:欢迎指正
【某音电商】protobuf聊天协议逆向 某音电商私信、聊天消息protobuf协议逆向分析与解析 阅读详情

相关推荐

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

安卓中两种压缩图片详解(比例压缩与质量压缩)

在提图片压缩之前,我先总结下图片的三种常见格式:JPEG,JPG,PNG  Jpeg格式   与jpg格式相似,经常在拷相片的时候看到得,但我们制作图片的时候一般是保存jpg,该种图片格式是文件相对jpg大,因为里面存储了很多相机里的拍摄参数,像色相、饱和度、对比度等  1.可支持有陨压缩  2.不支持透明  3.不支持动画  4.非矢量  5.有损压缩 可用于直接打印和印刷(相对

startCrazyActivity的博客 3881

关于使用perfetto(systrace)对卡顿进行分析-实战分析

本文主要讲述了我在使用perfetto分析小米中桌面滑动卡顿的方法以及步骤。 这是我用的trace文件: 链接:https://pan.baidu.com/s/11EhCvu0pfR7Qfu6bDf_GLw?pwd=ic43 提取码:ic43Perfetto 是用于性能检测和跟踪分析的生产级开源堆栈。它提供用于记录系统级和应用级跟踪、本机 + java 堆分析、使用 SQL 分析跟踪的库以及用于可视化和浏览多 GB 跟踪的基于 Web 的 UI 的服务和库。在地址栏输入https://ui.perfe

qq_40494059的博客 1万+

lrz图片压缩

lrz 参数 lrz(file, [options]): 1、file 通过 input:file 得到的文件,或者直接传入图片路径 [options] 这个参数允许忽略: 1、width {Number} 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。 2、height {Number} 同上 3、quality {Number} 图片压缩质量,取值 0 - 1,默认为0.7 4、fieldName {String} 后端接收的字段名,默认:file返回结果 返回值是一个promis

小白肥仔的博客 1448

0基础手把手搭建 Trae\+Seedance2\.0 真人短剧生成智能体(可直接运行)

前言:本文专为0基础新手编写,全程无复杂代码、无专业术语,一步一截图提示(操作路径清晰),只需跟着点鼠标、复制粘贴,就能搭建出可自动生成真人短剧的智能体,生成的短剧可直接导出发布。核心工具:Trae(字节跳动AI IDE,免费)+ Seedance2.0(真人视频生成API,公测免费),无需提前学习编程、设计,全程10-15分钟搞定。 适用人群:0基础小白、想快速生成真人短剧(自媒体、短视频创作者)、无需懂技术即可实现自动化短剧生成的人群。

skygulangfendouz的专栏 1058

【Gin框架入门到精通系列01】Gin框架介绍与环境搭建

本文是Gin框架入门到精通系列的第一篇,系统介绍Gin框架的基本概念、核心特性以及环境搭建。无论你是Go语言新手还是有经验的开发者,都能通过本文快速掌握Gin框架的基础知识,创建并运行你的第一个Gin应用。

GopherTribe的博客 1560

Android-图片压缩详解:原理、方法与实践

在Android应用开发中,处理图片是一个非常常见的需求。然而,大尺寸和高质量的图片可能会占用大量内存,导致应用程序性能下降,甚至引发OOM(Out of Memory)错误。因此,对图片进行合适的压缩是非常重要的。本文将详细介绍Android图片压缩的原理、方法和实践。在本文中,我们详细介绍了Android图片压缩的原理、方法和实践。我们学习了如何使用BitmapFactory.Options进行尺寸压缩和质量压缩,以及如何使用第三方库进行图片压缩。

沐雨风栉 6731

学Simulink--环境感知场景实例:基于Simulink的毫米波雷达多目标跟踪仿真

本文介绍了基于Simulink的毫米波雷达多目标跟踪仿真系统,重点分析了FMCW雷达信号处理流程(Range/Doppler FFT、CFAR检测)和多目标跟踪算法(JPDA数据关联、EKF状态估计)。通过构建城市道路交叉场景,验证了系统在跟踪精度(位置误差<0.2m)、实时性(单帧处理24ms)和鲁棒性(ID切换率<5%)方面的性能优势,并提出了UKF滤波、多传感器融合等优化方向。该仿真系统为自动驾驶环境感知提供了实用的毫米波雷达跟踪解决方案。

amy_mhd的博客 92

Android常用的图片压缩详解

Android客户端获取相册图片多张一起上传服务器时,如果不进行图片处理,可能会导致内存泄漏问题。这时图片压缩就至关重要了。但是又不能影响图片的清晰度。 压缩方式1: 设置图片格式 Android目前常用的图片格式有png,jpeg和webp。 png:无损压缩图片格式,支持Alpha通道,Android切图素材多采用此格式。 jpeg:有损压缩图片格式,不支持背景透明,...

听海的博客 9096

麒麟操作系统提示“默认密钥环已上锁”的解决办法

麒麟操作系统提示“默认密钥环已上锁”的解决办法

太极淘的博客 1万+

ST03N 里看不到 SE38 / SA38?别急,这不是没记录,而是被换了名字

摘要:SAP系统中SE38/SA38事务码在ST03N统计中可能"隐身",因其对话步骤被归集到对应的程序名(如SE38→RSABAPPROGRAM)。ST03N侧重工作负载聚合统计,而STAD提供短期明细记录。正确排查方法是:在ST03N中搜索程序名而非事务码,再通过STAD验证具体使用情况。这一现象在权限整改和审计中易造成误判,建议将程序名纳入常规监控,并区分ST03N(趋势分析)与STAD(事实校验)的不同用途。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 953

Android中图片压缩方式总结

bitmap图片压缩方式总结

IT从业者,生活精致一点,工作认真一点! 5535

k8s篇之underlay网络和overlay区别

underlay和overlay

小橙子的笔记屋 2142

Android 图片压缩

Android 开发中的图片压缩涉及到的几个方法: 压缩图片大小: /*** * Compression picture by bitmap * * @param mWidth * @param mHeight * @param mBitmap * @return */ public static Bitmap compressWithBitma

Anddroid_LanYan的专栏 914

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android压缩图片到100K以下并保持不失真的高效方法

原文地址:http://my.eoe.cn/isnull/archive/564.html 前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右。这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间。 在开发Android企业应用时,会经常上传图片到服务器,而我们公司目前维护的一个项目便是如此。该项目是通过私有ap

zhenye1986的专栏 698

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android上传图片过大处理,Glide的缓存机制

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术高级UI,自定义ViewUI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

2401_84152879的博客 926

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 图片二次采样、质量压缩

引言: Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffffffff,包括图片透明度Alpha和RGB,图片质量很好,每一个像素位占4个字节,如果图片很大将会占据很大的内存空间。存储在SDCard的image很小,加载进内存可能就会很大。因此,对bitmap图像进行操

liumeng920的博客 512

Android不错的图片压缩方法,圆我大厂梦

/** 质量压缩方法 @param image @return */ public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 int options

sa3221sa的博客 911

android上传图片过大处理

由于题目很多整理答案的工作量太大,所以仅限于提供知识点,详细的很多问题和参考答案我都整理成了 PDF文件《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!文件[外链图片转存中…(img-glQGq0uE-1713221876509)][外链图片转存中…(img-UpsVYrgO-1713221876511)][外链图片转存中…(img-YPjailIT-1713221876512)]

2401_84123056的博客 1026

图片压缩

android 系统的图片压缩大体上有三种方式,质量压缩,比例压缩,采样率压缩 质量压缩 public static Bitmap getCompressBitmapByQuality(Bitmap bitmap, int quality) {             ByteArrayOutputStream outputStream = new ByteArrayOutputSt

ruancoder的博客 710

二次采样质量压缩

二次采样: private void doubleSampling() { try { InputStream in = getAssets().open("mm.jpg"); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecode

得不到的都释怀的博客 286

可能是最详细的Android图片压缩原理分析(二)—— 鲁班压缩算法解析

第一步进行采样率压缩; 第二步进行宽高的等比例压缩(微信对原图和缩略图限制了最大长宽或者最小长宽); 第三步就是对图片的质量进行压缩(一般75或者70); 第四部就是采用webP的格式。 经过这四部的处理,基本上和微信朋友圈的效果一致,包括文件大小和显示效果 ...

weixin_44005563的博客 6486

自定义圆形头像 和 图片压缩

经常在项目中要用到圆形头像:直接贴出代码。public class CircleImageDrawable extends Drawable { private Paint mPaint; private int mWidth; private Bitmap mBitmap ; public CircleImageDrawable(Bitmap bitmap) { mBitma

Boomhe 的 Android 之路 541

图片的压缩处理

在处理图片显示时,如果图片显示较少,一般没有什么问题。但如果一次加载很多图片,很有可能报oom错误。比如照片墙,viewpager同时显示几十张图片,所有有必要了解图片的压缩处理。 1.新建一个函数,封装图片的压缩处理。 private Bitmap decodeBitmapFromFile(String absolutePath, int reqWidth, int reqHeight) {

谢岩的博客 424

Bitmap 转字节流字符, 压缩等处理

//压缩后转字节字符 public String bitmaptoString(Bitmap bitmap) { // 将Bitmap转换成字符串 String string = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); b...

weixin_30646505的博客 157

图片压缩最优方案

Github地址: https://github.com/jeanboydev/Android-BitherCompress 原文地址:http://blog.csdn.net/copy_yuan/article/details/51353629 拓展:鲁班压缩 Github地址:https://github.com/Curzibn/Luban 源码(增加回调) import android.g...

weixin_34288121的博客 318
上一篇: 安卓中两种压缩图片详解(比例压缩与质量压缩)
下一篇: 背景选择器常见错误
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值