Android学习笔记_图片相关

来源:互联网 发布:异形与人类谁厉害 知乎 编辑:程序博客网 时间:2024/05/22 14:02

========图片相关的知识=======

 

a. 获得手机屏幕的宽高(兼容低版本)
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
 windowHeight = wm.getDefaultDisplay().getHeight();
 windowWidth  = wm.getDefaultDisplay().getWidth();

 

b. 加载图片到内存
-- 不是真的解析图片到内存,只是解析图片的宽高等信息  
BitmapFactory.Options opt = new Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/sdcard/a.jpg", opt);
--真的解析图片 
opt.inJustDecodeBounds = false;
//采样率
opt.inSampleSize = 1;
Bitmap bm = BitmapFactory.decodeFile("/sdcard/a.jpg", opt);

 

c. 获得图片头部信息
ExifInterface exif = new ExifInterface("/sdcard/a.jpg");
   
String datetime = exif.getAttribute(ExifInterface.TAG_DATETIME);
String orientation = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
String make = exif.getAttribute(ExifInterface.TAG_MAKE);

 

d. 获取系统Gallery的图片
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/*");

startActivityForResult(intent, 0);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (data != null) {
   Uri uri = data.getData();
   iv.setImageURI(uri);
  }
}

 

e.  画图
-- 定义画笔
paint = new Paint();
paint.setStrokeWidth(3);
paint.setColor(Color.GRAY);

//创建图片模版
baseBitmap = Bitmap.createBitmap(300, 375, Bitmap.Config.ARGB_8888);
//创建画布
canvas = new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);

//然后响应ImageView的iv.setOnTouchListener(new OnTouchListener() {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:  //finger down
 break;

case MotionEvent.ACTION_MOVE: // finger move
 break;
case MotionEvent.ACTION_UP:  // finger up
         break;

});

//最后保存到sdcard
FileOutputStream fos = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, fos);
//模拟SD卡挂载媒体的动作,相当于刷新一下,Gallery里才能看到
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);

f. 其他操作
-- decode出来的是只读图片,createBitmap出来的是可更改的
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.g3_back, opts);
-- 可以设置Matrix参数放大,缩小,旋转图片
matrix.setScale(0.5f, 1); //水平方向缩小0.5倍
matrix.setRotate(180, baseBitmap2.getWidth()/2, baseBitmap2.getHeight()/2); //以第二三参数为圆心旋转180度
matrix3.setTranslate(10, 15);  //水平和竖直移动
matrix5.setScale(-1, 1);  // 获得倒影效果

 

 

 

0 0
原创粉丝点击