整理尺寸压缩(从SD卡中和从网络中)+质量压缩+内容提供者获得图库,视频,音乐

本文详细介绍了一种图片尺寸压缩的方法,通过调整采样率来减少图片大小,同时保持良好的视觉效果。此外,还介绍了如何使用Content Provider从SD卡读取音频、视频和图像文件,包括获取文件的元数据如标题、艺术家、时长和路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.尺寸压缩

sd卡
网络

网络的
模拟装桶模式
							 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                            BitmapFactory.Options options = new BitmapFactory.Options();
                            options.inJustDecodeBounds=true;
                            int len=0;
                            byte arr[]=new byte[1024];
                            while ((len=inputStream.read(arr))!=-1){
                                byteArrayOutputStream.write(arr,0,len);
                            }
                            byte[] bytes = byteArrayOutputStream.toByteArray();
                            BitmapFactory.decodeByteArray(bytes,0,bytes.length,options);


                            int size=1;
                        int outHeight = options.outHeight;
                        int outWidth = options.outWidth;
                        while (outHeight/size>200||outWidth/size>200){
                            size*=2;
                        }
                        options.inJustDecodeBounds=false;
                        options.inSampleSize=size;
                        Bitmap bitmap1 = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);



sd卡的
				BitmapFactory.Options options = new BitmapFactory.Options();
                options.inJustDecodeBounds=true;
                BitmapFactory.decodeFile("/sdcard/Pictures/"+map.get("title").toString()+".jpg",options);
                int outWidth = options.outWidth;
                int outHeight = options.outHeight;

                int size=1;

                while (outWidth/size>200||outHeight/size>200){
                    size*=2;
                }

                options.inJustDecodeBounds=false;
                options.inSampleSize=size;
                Bitmap title = BitmapFactory.decodeFile("/sdcard/Pictures/" + map.get("title").toString() + ".jpg", options);


压缩质量

        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            try {
                bitmap.compress(Bitmap.CompressFormat.JPEG,50,new FileOutputStream(file));

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

        }

内容提供者

1.获取音频: (1)uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址
String[] strs= new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.DATA};
2.获取视频: (1)uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址
String[] strs= new String[]{MediaStore.Video.Media.TITLE,MediaStore.Video.Media.ARTIST,MediaStore.Video.Media.DURATION,MediaStore.Video.Media.DATA};
3.获取图库: (1)uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI (2)字段:
MediaStore.Images.Media.TITLE;图片名称
MediaStore.Images.Media.SIZE;大小
MediaStore.Images.Media.DATA;地址
4.获取联系人: (1)uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI (2)字段:Phone.DISPLAY_NAME:姓名 NUMBER:电话 String[] strs= new
String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};
5.获取短信: (1)uriTelephony.Sms.CONTENT_URI (2)字段:ADDRESS 地址 BODY 内容 String[] strs= new
String[]{Telephony.Sms.ADDRESS,Telephony.Sms.BODY};
备注:1 2 3 读sd卡的权限 4 读联系人的权限 5 读短信的权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值