一、创建一个Bitmap
(1)从int数组创建位图—Bitmap
int[] piexls={'A','R','G','B'}; Bitmap.createBitmap(piexls,12,8,Bitmap.Config.ARGB_8888);
(2)将一个图片文件解码为Bitmap
由解码器创建——BitmapFactory
public static Bitmap decodeFile(String pathName) {
return decodeFile(pathName, null);
}
public static Bitmap decodeResource(Resources res, int id, Options opts)
public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)
(3)位图数据存放在byte数组中
求byte数组的大小
//如ARGB bitcount为4
int size=(bitmap.getWidth())*(bitmap.getHeight())*(bit count);
(4)获取某个像素数据
//传入坐标
int getPixel(int x,int y)
//传入一片区域,获得区域数据
void getPiexls(int[] pixels,inf offset)
二、按需解码,减少加载到内存图片的大小
BitmapFactory.Options options = new BitmapFactory.Options();
//设置为true,即不获取图片的像素数据,只获取图片的宽高
options.inJustDecodeBounds = true;
//根据目标显示尺寸设置采样大小,不小于1且为2的整次幂
options.inSampleSize = 8;
//调整位图设置
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/tiger.jpg", options);
log(context, "bitmap in memory: " + bitmap.getByteCount());
三、Bitmap压缩
public boolean compress(CompressFormat format, int quality, OutputStream stream)
public static Bitmap createScaledBitmap(Bitmap src, int dstWidth, int dstHeight,
boolean filter)
四、回收位图
(1)小于3.0
位图数据存放在native heap中
需要主动调用recycle回收
(2)大于等于3.0
位图数据存放在虚拟机堆中
内存由虚拟机自动管理,可以不掉用recycle
五、点9图
拉伸部分为黑色所对应行或列部分
中间灰色部分为内容填充区域