如何在android中保存图像文件?

时间:2013-03-29 12:54:06

标签: android

我正在将图像文件读入字节数组。这个字节数组我必须再次作为图像文件保存到sdcard上。要读取我使用过以下代码的文件:

public void readimage()
 {
 InputStream ins_image = getResources().openRawResource(R.drawable.btn_cancel);
 outputStream=new ByteArrayOutputStream();
 try 
 {
   ins_image.available();
 } catch (IOException e)    {   e.printStackTrace();    }
   try 
   {
    Log.e( "Size of image", ""+ins_image.available());
  } catch (IOException e)   {e.printStackTrace();}
   int size = 0;
   byte[] buffer_image = new byte[200000];
   try {
    while((size=ins_image.read(buffer_image,0,200000))>=0)
    {
     outputStream.write(buffer_image,0,size);
    }
    } catch (IOException e) {   e.printStackTrace();    }
    int length_of_image= outputStream.toByteArray().length;
    byte_image=outputStream.toByteArray();
    Log.e("Size of image",""+length_of_image);
      }          

以下代码保存文件:

public void saveimage_fromarray()
{
  File photo=new File(Environment.getExternalStorageDirectory(), "photo.png");
  if (photo.exists()) 
  {
    photo.delete();
  }
  try 
  {
  FileOutputStream fos=new FileOutputStream(photo.getPath());
  fos.write(byte_image[0]);
  fos.close();
  }
   catch (java.io.IOException e) 
 }

然而,文件正在保存,但它没有显示任何内容。有人请告诉我为什么会这样?

3 个答案:

答案 0 :(得分:1)

将图像的大小设置为0.

fos.write(byte_image[0]);

答案 1 :(得分:0)

好像你只写了一个字节的图像。

fos.write(byte_image[0]);

请比较源文件,字节缓冲区,数组和输出文件大小。

答案 2 :(得分:0)

为什么不简化所有内容,只需拨打this method

bmp.compress(Bitmap.CompressFormat.PNG, 100, <pass here a valid file outputstream>);