`

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();
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics