1获取手机存储图片,默认一个像素占4个字节
System.out.println("手机存储路径----------》:"+Environment.getExternalStorageDirectory());
String path= Environment.getExternalStorageDirectory()+"/JDIM/smiley/test2.jpg";
Bitmap bitmap= BitmapFactory.decodeFile(path);
System.out.println("图片大小:"+bitmap.getByteCount()+"字节");
System.out.println("图片大小:"+bitmap.getByteCount()/1024/1024+"M");
System.out.println("图片宽高:"+bitmap.getWidth()+"像素"+" "+bitmap.getHeight()+"像素");
//默认1个像素占4个字节
System.out.println("图片单行字节数:"+bitmap.getRowBytes());
mImgv.setImageBitmap(bitmap);
Environment.getExternalStorageDirectory()获取的路径是:
/storage/emulated/0
输出结果
08-17 14:03:47.144 18535-18535/com.example.picturedemo I/System.out: 图片大小:51916800字节
08-17 14:03:47.144 18535-18535/com.example.picturedemo I/System.out: 图片大小:49M
08-17 14:03:47.144 18535-18535/com.example.picturedemo I/System.out: 图片宽高:3120像素 4160像素
08-17 14:03:47.144 18535-18535/com.example.picturedemo I/System.out: 图片单行字节数:12480
2图片压缩算法
//压缩算法
int maxWidth=960;
int maxHeight=1280;
//图片内存压缩
BitmapFactory.Options options=new BitmapFactory.Options();
String path= Environment.getExternalStorageDirectory()+"/JDIM/smiley/test2.jpg";
//控制我们每个像素占有的字节数
// options.inPreferredConfig= Bitmap.Config.ARGB_8888;
//获取宽高---不加载Bitmap对象
//inJustDecodeBounds=true---只加载Bitmap的边,而不加载实际数据
options.inJustDecodeBounds=true;
Bitmap bitmap= BitmapFactory.decodeFile(path,options);
System.out.println("加载回来的东西: "+bitmap);
System.out.println("宽高:"+options.outWidth+" "+options.outHeight);
//运算缩放比例
int scaleNum=1;
while(options.outWidth/scaleNum>maxWidth ||options.outHeight/scaleNum>maxHeight){
scaleNum*=2;
}
System.out.println("运算后的缩放倍数 "+scaleNum);
//设置加载图片时的压缩比例
//此处缩放比例,如果该值是2的整数次幂,则直接取值,如果不是,则向下取最近的一个2的整数次幂
options.inSampleSize=scaleNum;
options.inJustDecodeBounds=false;
Bitmap bitmapnew= BitmapFactory.decodeFile(path,options);
System.out.println("新的:----》");
System.out.println("图片大小:"+bitmapnew.getByteCount()+"字节");
System.out.println("图片大小:"+bitmapnew.getByteCount()/1024/1024+"M");
System.out.println("图片宽高:"+bitmapnew.getWidth()+" "+bitmapnew.getHeight());
mImgv.setImageBitmap(bitmapnew);
输出结果:
08-17 14:04:13.852 18535-18535/com.example.picturedemo I/System.out: 加载回来的东西: null
08-17 14:04:13.853 18535-18535/com.example.picturedemo I/System.out: 宽高:3120 4160
08-17 14:04:13.853 18535-18535/com.example.picturedemo I/System.out: 运算后的缩放倍数 4
08-17 14:04:13.854 18535-18535/com.example.picturedemo D/skia: jpeg_decoder mode 1, colorType 4, w 3120, h 4160, sample 4, bsLength 0!!
08-17 14:04:14.047 18535-18535/com.example.picturedemo D/skia: jpeg_decoder finish successfully, L:1917!!!
08-17 14:04:14.048 18535-18535/com.example.picturedemo I/System.out: 新的:----》
08-17 14:04:14.048 18535-18535/com.example.picturedemo I/System.out: 图片大小:3244800
08-17 14:04:14.049 18535-18535/com.example.picturedemo I/System.out: 图片宽高:780 1040