1:根据图片在本地上的绝对路径获取图片并转换成Bitmap:
private Bitmap getDiskBitmap(String pathString)
{
Bitmap bitmap = null;
try
{
File file = new File(pathString);
if(file.exists())
{
bitmap = BitmapFactory.decodeFile(pathString);
}
} catch (Exception e)
{
// TODO: handle exception
}
return bitmap;
}
2:通过Intent在Activity之间传递Bitmap:
之前想通过一个自定义类实现Serializable接口来直接实现intent传递自定义对象,结果项目报错,查看了原因才知道我的自定义类中含有bitmap变量,而Bitmap变量是不能被序列化的,所以无法通过intent来直接传递整个对象,所以我采取了分开传值:
传送方:
intent.putExtra("image", bmp);
接受方:
Bitmap bmp = getIntent().getParcelableExtra("image")
3:将bitmap以数种格式保存在本地:
private void savePreviewBitmap(File file,Bitmap photoBm,String fileName){
createFile();
file = new File(Environment.getExternalStorageDirectory().getPath() + "/cardBook/" + fileName + ".jpg");
if(file.exists()){
file.delete();
}
try{
file.createNewFile();
}catch(Exception e){
e.printStackTrace();
}
FileOutputStream fOut = null;
try{
fOut = new FileOutputStream(file);
}catch(FileNotFoundException e){
e.printStackTrace();
}
photoBm.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
try{
fOut.flush();
fOut.close();
}catch(IOException e){
e.printStackTrace();
}
}
在CompressFormat.XXX中自己选择格式