当前位置:首页 » 安卓系统 » android文件图片压缩

android文件图片压缩

发布时间: 2023-01-19 00:02:01

‘壹’ Android黑科技,图片终极压缩

一、支持自定义配置、不失真和批量处理

二、图片上传为什么要压缩
1、图片服务器空间限制,磁盘昂贵
2、网络不稳定,大文件需要断点续传
3、尽可能避免安卓OOM异常
4、后台约定的规则<200KB
5、需要上传原图的应用有医院临床项目、金融银行

三、图片压缩流程
1、递归每张图片
2、设置图片格式 Bitmap.CompressFormat.JPG
png, jpg,webp
3、质量压缩bitmap.compress(format,quality,baos)
由于png是无损压缩,所以设置quality无效(不适合作为缩略图)
采样率压缩BitmapFactory.Options.inSampleSize
缩小图片分辨率,减少所占用磁盘空间和内存大小
缩放压缩canvas.drawBitmap(bitmap, null,rectF,null)
减少图片的像素,降低所占用磁盘空间大小和内存大小,可用于缓存缩略图
JNI调用JPEG库
Android的图片引擎使用的是阉割版的skia引擎,去掉了图片压缩中的哈夫曼算法
4、像素修复
5、返回压缩
6、完成压缩

demo: https://github.com/ApeCold/Learn_Compress_Sample

参考:
Luban框架 https://github.com/Curzibn/Luban
缺点
1、当没有设定压缩路径时,抛异常无闪退
2、源码中,压缩比率固定值60,无法修改
3、压缩配置,参数不太适应真实项目需求
4、不能指定压缩大小,比如100KB以内
https://github.com/zettsu/Compressor

‘贰’ 说说在 Android 中如何压缩图片

1:ByteArrayOutputStream 压缩图片质量,不会改变图片大小

java">privateBitmapcompressImage(Bitmapimage){

ByteArrayOutputStreambaos=newByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG,100,baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
intoptions=100;while(baos.toByteArray().length/1024>100){//循环判断如果压缩后图片是否大于100kb,大于继续压缩
baos.reset();//重置baos即清空baos
image.compress(Bitmap.CompressFormat.JPEG,options,baos);//这里压缩options%,把压缩后的数据存放到baos中
options-=10;//每次都减少10}
ByteArrayInputStreamisBm=newByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中
Bitmapbitmap=BitmapFactory.decodeStream(isBm,null,null);//把ByteArrayInputStream数据生成图片
returnbitmap;
}

2:就是改变图片大小

privateBitmapgetimage(StringsrcPath){
BitmapFactory.OptionsnewOpts=newBitmapFactory.Options();//开始读入图片,此时把options.inJustDecodeBounds设回true了
newOpts.inJustDecodeBounds=true;
Bitmapbitmap=BitmapFactory.decodeFile(srcPath,newOpts);//此时返回bm为空
newOpts.inJustDecodeBounds=false;intw=newOpts.outWidth;inth=newOpts.outHeight;//现在主流手机比较多是800*480分辨率,所以高和宽我们设置为
floathh=800f;//这里设置高度为800f
floatww=480f;//这里设置宽度为480f//缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可
intbe=1;//be=1表示不缩放
if(w>h&&w>ww){//如果宽度大的话根据宽度固定大小缩放
be=(int)(newOpts.outWidth/ww);
}elseif(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);returncompressImage(bitmap);//压缩好比例大小后再进行质量压缩}

‘叁’ 说说在 Android 中如何压缩图片

目前存在两种压缩图片方式:

而图片有三种存在形式:

bigmap 在内存中的大小是按像素计算的,也就是width * height,所以如果需要在 Android 中显示照片,那么就必须进行按比例压缩,避免因为内存消耗过大,导致 APP 退出。

是不是很简单呀 O(∩_∩)O哈哈~

‘肆’ 怎么把手机照片压缩成文件

一、安卓手机步骤如下:
1、进入文件管理模式:选择手机文件管理图标进入文件管理模式。
2、选择图片:在文件管理中选择自己想要发送或压缩的图片,点击复制。
3、建立文件夹:点击你需要储存图片的位置新建文件夹,输入文件夹的名称完成后保存。
4、移动或拷贝照片到文件夹:找到并点击打开新建的文件夹,把照片粘贴进该文件夹。
5、制作压缩包:选择带有照片的文件夹,选取压缩功能把文件夹做成压缩文件,输入文件名完成文件压缩。
6、照片发送:选择做好的压缩文件包,在弹出的对话框里找到分享图标,选择分享。选取自己喜欢的方式,比如微信、QQ、邮件等等,按各自的方式分享即可。
二、苹果手机步骤如下:
1、下载并安装具有压缩功能的APP,比如“压缩专家”。
2、打开安装的APP,选择导入相片选项进入手机相册。
3、选择需要发送的照片或视频后点压缩并输入压缩文件名。
4、压缩完成后点击压缩包后选择分享即可。
5、选择分享方式,选取自己喜欢的方式,比如微信、QQ、邮箱等等。
6、按选取的方式发送。
三、把手机里的照片传到电脑就更方便了,步骤如下:
1、建立新文件夹把手机照片拷贝到该文件夹。
2、鼠标右键选中新文件夹,选择添加到压缩文件(A),确定后输入文件名制作压缩文件包。
3、打开邮件或微信、QQ,按不同的方式发送,邮件一般以附件的形式发送,微信和QQ可以直接作为文件发送。

‘伍’ 可以自定义大小和像素来进行图片压缩的Android压缩库

老规矩 先上依赖

Add it in your root build.gradle at the end of repositories:

allprojects {

        repositories {

                ...   

                maven { url 'https://jitpack.io' }

        }

}

dependencies {

            implementation 'com.github.asnhkl1:X-CompressImage:1.0.1'

    }

背景:

对于一些需要对图片进行定制化压缩的场景,如必须图片必须多少多少K以下,或者分辨率有要求的场景。开发此库。

你可以这样用:

CompressConfig  为建造模式去设置参数

CompressConfig compressConfig = CompressConfig.builder()

                .setUnCompressMinPixel(1000) // 最小像素不压缩,默认值:1000

                .setUnCompressNormalPixel(2000) // 标准像素不压缩,默认值:2000

                .setMaxPixel(1200) // 长或宽不超过的最大像素 (单位px),默认值:1200

                .setMaxSize(200 * 1024) // 压缩到的最大大小 (单位B),默认值:200 * 1024 = 200KB

                .enablePixelCompress(true) // 是否启用像素压缩,默认值:true

                .enableQualityCompress(true) // 是否启用质量压缩,默认值:true

                .enableReserveRaw(false) // 是否保留源文件,默认值:true

                .setCacheDir(path) // 压缩后缓存图片路径,默认值:Constants.COMPRESS_CACHE

                .setShowCompressDialog(true) // 是否显示压缩进度条,默认值:false

                .create();

如果你仅仅只是压缩图片  我们给有默认的参数使用getDefaultConfig()

        this.unCompressMinPixel =1000;

        this.unCompressNormalPixel =2000;

        this.maxPixel =1200;

        this.maxSize =204800;

        this.enablePixelCompress =true;

        this.enableQualityCompress =true;

        this.enableReserveRaw =true;

下边就是使用了 。很简单 ,传参加回调

     CompressImageManager.build(this,compressConfig, photos, new CompressImage.CompressListener() {

            @Override

            public void onCompressSuccess(ArrayList<Photo> var1) {

                Log.i("imageCompress","success");

              //do what you want to do

            }

            @Override

            public void onCompressFailed(ArrayList<Photo> var1, String var2) {

                Log.e("imageCompress","false",null);

            }

        }).compress();

git 地址:https://github.com/asnhkl1/X-CompressImage

欢迎指教,互相学习

‘陆’ android 图片压缩

在文件管理里面长按图片会出现设置面板,选中压缩图片即可以。

‘柒’ android中压缩图片的几种方法比较

图片有三种存在形式:硬盘上时是file,网络传输时是stream,内存中是stream或bitmap,所谓的质量压缩,它其实只能实现对 file的影响,你可以把一个file转成bitmap再转成file,或者直接将一个bitmap转成file时,这个最终的file是被压缩过的,但 是中间的bitmap并没有被压缩(或者说几乎没有被压缩,我不确定),因为bigmap在内存中的大小是按像素计算的,也就是width * height,对于质量压缩,并不会改变图片的像素,所以就算质量被压缩了,但是bitmap在内存的占有率还是没变小,但你做成file时,它确实变小 了;
而尺寸压缩由于是减小了图片的像素,所以它直接对bitmap产生了影响,当然最终的file也是相对的变小了;

‘捌’ 手机怎么压缩图片

软件版本: 文件管理

手机: 华为P30

系统:安卓9.1

1、在手机桌面上找到,并点击进入“文件管理”。


‘玖’ Android 图片选择(ImageSelector) (拍照,裁剪,压缩,查看)

1.遍历sdcard文件夹(指定层次深度 searchDeep ),如果文件夹发现图片 , 添加到已搜索到图片的文件列表中,并跳入下一个文件夹搜索

2.使用 ContentResolver 搜索 添加搜索标签(png,jpg,jpeg,gif 等) 优点:更快速

压缩调用

第一步-->

采样率压缩:设置 BitmapFactory.Options.inSampleSize 大小

第二步-->

PNG:尺寸压缩( Config:ARGB_4444 ,工具: Canvas );

JPG:尺寸压缩( Config:ARGB_565 ,工具: Canvas )+压缩质量( bitmap.compress() )

注 :

1.GIF不做压缩处理

2.尺寸压缩:改变宽高(png,jpg)

3.压缩质量:改变文件大小(适用jpg,png无效)

‘拾’ 怎样在安卓系统上压缩图片大小

安卓系统是手机系统,我们很少在手机上进行压缩,有的手机是有压缩功能的,想小米,oppo类的手机上有这种功能,压缩效果并不乐观,电脑上执行压缩小编例举了一下步骤:

a、打开任意浏览器,点击浏览器的搜索框,在这里搜索图片压缩,选择网页搜索,我们要找到下载工具的网页,将工具下载安装到我们的电脑。

其实图片文件压缩是一个简单的过程,但是我们要找对图片文件压缩的软件,进行图片压缩就是一件简单的事情

热点内容
java小数正则表达式 发布:2025-05-20 11:30:58 浏览:136
文件夹加密win7 发布:2025-05-20 11:27:46 浏览:837
压缩文件设置密码有什么意思 发布:2025-05-20 11:26:37 浏览:551
造梦西游qq登录如何修改密码 发布:2025-05-20 11:18:36 浏览:382
淘宝缓存清理后还是大 发布:2025-05-20 11:15:39 浏览:149
ios云存储自动订购 发布:2025-05-20 11:06:22 浏览:110
编程与数学 发布:2025-05-20 11:01:23 浏览:444
asp连接远程数据库 发布:2025-05-20 10:50:20 浏览:390
一般电脑配置哪个好 发布:2025-05-20 10:40:58 浏览:603
我的世界撸树服务器 发布:2025-05-20 10:33:37 浏览:741