Android之Bitmap使用心得(持续更新)
16lz
2021-01-24
因为此代码里面有解释,因此直接上代码:
public classChangeBitmapPixel extendsActivity{privateButtonbtn;
privateBitmapphoto;
privateImageViewimage;
FileOutputStreamfos= null;
BufferedOutputStreambos= null;
privateByteArrayOutputStreambaos;
@Override
public voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image=(ImageView)findViewById(R.id.image);
btn=(Button)findViewById(R.id.button);
btn.setOnClickListener( newOnClickListener(){
@Override
public voidonClick(Viewv){
// TODOAuto-generatedmethodstub
Intenti= newIntent("android.media.action.IMAGE_CAPTURE");
// 如果使用下面注释的代码,将不返回数据给Intent
// i.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(Environment
// .getExternalStorageDirectory(),"pic.jpg")));
// 启动摄像头并且在拍摄后返回
startActivityForResult(i,10);
}});
}
@Override
protected voidonActivityResult( intrequestCode, intresultCode,Intentdata){
// 两种读取文件的方法
Uriuri=data.getData();
if(uri!= null){
System.out.println("uri不为空");
photo=BitmapFactory.decodeFile(uri.getPath());
System.out.println("uri:"+photo);
}
if(photo== null){
Bundlebundle=data.getExtras();
if(bundle!= null){
photo=(Bitmap)bundle.get("data");
image.setImageBitmap(photo);
// 保存照片
savePic(photo);
System.out.println("photo:"+photo);
} else{
Toast.makeText(ChangeBitmapPixel. this,
"为空",
Toast.LENGTH_LONG).show();
return;
}
}
super.onActivityResult(requestCode,resultCode,data);
}
public voidsavePic(Bitmapbitmap){
// 使用此流读取
baos= newByteArrayOutputStream();
// 第二个参数影响的是图片的质量,但是图片的宽度与高度是不会受影响滴
bitmap.compress(Bitmap.CompressFormat.JPEG,80,baos);
// 这个函数能够设定图片的宽度与高度
// Bitmapmap=Bitmap.createScaledBitmap(bitmap,400,400,true);
// 把数据转为为字节数组
byte[]byteArray=baos.toByteArray();
try{
fos= newFileOutputStream(Environment.getExternalStorageDirectory()+"pic.jpg");
bos= newBufferedOutputStream(fos);
bos.write(byteArray);
} catch(FileNotFoundExceptione){
// TODOAuto-generatedcatchblock
e.printStackTrace();
} catch(IOExceptione){
// TODOAuto-generatedcatchblock
e.printStackTrace();
} finally{
try{
baos.close();
} catch(IOExceptione){
// TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
更多相关文章
- 学习深入理解android第一章
- Android(安卓)NDK开发之旅29--C++--list、set、map用法
- Android打包剔除指定权限
- Android(安卓)实现GIF播放(解码)
- Android:网络图片Url 转 Bitmap
- ubuntu android 环境变量的配置
- android App冷启动优化
- android半透叠加对照表
- Python +appium 封装desired_caps模块