byte[]将图片变为字节存入流中,然后Bit地图将流读出,显示图片
byte[]将图片变为字节存入流中,然后Bitmap将流读出,显示图片
这几天遇到一个问题,绊住好长时间,为了以后有据可查,现在记录下来。
问题:选中图片还会用在别的地方,所以先把图片以某种方式保存起来,然后到了用的时候再将图片取出来用。
这个的做法比较容易想到的就是流来存然后取;
1。首先就是先把图片读成字节,然后将字节保存在流中。
//存储图片,变成byte形式,便于在上面取出
byte[] buffer=new byte[1024];
//等号后面是图片的路径
InputStream in= cr.openInputStream(uri);
//下面是将图片读成字节,而且是以1024为单位读的
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//定义整数类型对象
int number;
//利用循环方式将图片读完整
while((number=in.read(buffer, 0, buffer.length))>0)
{
baos.write(buffer, 0, number);
}
//将字节保存到byte[]数组对象中
byte[] reallyByte=baos.toByteArray();
//byte存储了图片,然后再用流存储图片,定义文件名和访问权限
OutputStream os = openFileOutput("file.txt",Activity.MODE_PRIVATE);
os.write(reallyByte);
os.close();
//log一下,检验是否真的有字节存放到了指定文件夹中
Log.v("MyPhoneText","reallyByte.length="+reallyByte.length);
2。取出来
现在用到了再android中很重要的一个点Bitmap。一定记得要多留意此小东西的用法。前途无量。
还要提醒下的是,要放在try中存储和读取流
try{
//定义BitmapFactory工厂的decodeStream方法,这个工厂方法很多。继续学习。方法内为存储图片的那个流文件的路径
Bitmap bitmap = BitmapFactory.decodeStream(this.openFileInput("file.txt"));
//取出的bitmap对象就直接可以用来放在ImageView中显示
imageShow.setImageBitmap(bitmap);
}catch(Exception e){
e.printStackTrace();
}
这几天遇到一个问题,绊住好长时间,为了以后有据可查,现在记录下来。
问题:选中图片还会用在别的地方,所以先把图片以某种方式保存起来,然后到了用的时候再将图片取出来用。
这个的做法比较容易想到的就是流来存然后取;
1。首先就是先把图片读成字节,然后将字节保存在流中。
//存储图片,变成byte形式,便于在上面取出
byte[] buffer=new byte[1024];
//等号后面是图片的路径
InputStream in= cr.openInputStream(uri);
//下面是将图片读成字节,而且是以1024为单位读的
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//定义整数类型对象
int number;
//利用循环方式将图片读完整
while((number=in.read(buffer, 0, buffer.length))>0)
{
baos.write(buffer, 0, number);
}
//将字节保存到byte[]数组对象中
byte[] reallyByte=baos.toByteArray();
//byte存储了图片,然后再用流存储图片,定义文件名和访问权限
OutputStream os = openFileOutput("file.txt",Activity.MODE_PRIVATE);
os.write(reallyByte);
os.close();
//log一下,检验是否真的有字节存放到了指定文件夹中
Log.v("MyPhoneText","reallyByte.length="+reallyByte.length);
2。取出来
现在用到了再android中很重要的一个点Bitmap。一定记得要多留意此小东西的用法。前途无量。
还要提醒下的是,要放在try中存储和读取流
try{
//定义BitmapFactory工厂的decodeStream方法,这个工厂方法很多。继续学习。方法内为存储图片的那个流文件的路径
Bitmap bitmap = BitmapFactory.decodeStream(this.openFileInput("file.txt"));
//取出的bitmap对象就直接可以用来放在ImageView中显示
imageShow.setImageBitmap(bitmap);
}catch(Exception e){
e.printStackTrace();
}