Bitmap位图包括像素以及长、宽、颜色等描述信息。长宽和像素位数是用来描述图片的,可以通过这些信息计算出图片的像素占用内存的大小。
位图可以理解为一个画架,把图放到上面然后可以对图片做一系列的处理。
位图文件图像显示效果好,但是非压缩格式,需要占用较大的存储空间。
Config
表示图片像素类型
ARGB_8888ARGB_4444RGB_565ALPHA_8使用场景
ARGB_4444失真严重,基本不用ALPHA_8使用场景特殊,比如设置遮盖效果等RGB_565,不需要设置透明度ARGB_8888,既要设置透明度,对图片质量要求又高CompressFormat
压缩格式
Bitmap.CompressFormat.JPEGBitmap.CompressFormat.PNGBitmap.CompressFormat.WEBP特点:
JPEG:一种有损压缩(JPEG2000既可以有损也可以无损),".jpg"或者".jpeg"; 优点:采用了直接色,有丰富的色彩,适合存储照片和生动图像效果;缺点:有损,不适合用来存储logo、线框类图。PNG: 一种无损压缩,".png"; 优点:支持透明、无损,主要用于小图标,透明背景等;缺点:若色彩复杂,则图片生成后文件很大;WEBP:以WebP算法进行压缩;Google开发的新的图片格式,同时支持无损和有损压缩,使用直接色。无损压缩,相同质量的webp比PNG小大约26%;有损压缩,相同质量的webp比JPEG小25%-34% 支持动图,基本取代gifBitmapFactory类提供了四类方法:
decodeFile()decodeResource()decodeStream()decodeByteArray()分别表示从文件系统,资源,输入流,字节数组中加载出一个Bitmap对象。
高效加载
采用BitmapFactory.Options来加载所需尺寸的图片。通过inSmapleSize参数设置图片采样率。
public static Bitmap compressImageToBitmap(String imagePath){ BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile(imagePath,options); if(bitmap != null){ System.out.println("bitmap=========1>>>>"+bitmap.getByteCount()); }else{ System.out.println("kong"); } options.inJustDecodeBounds = false; //采样率为2,那么采样后的图片其宽/高均为原图的1/2 options.inSampleSize = 2; bitmap = BitmapFactory.decodeFile(imagePath,options); System.out.println("bitmap=========2>>>>"+bitmap.getByteCount()); return bitmap; }