我正在将图像文件读入字节数组。这个字节数组我必须再次作为图像文件保存到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)
}
然而,文件正在保存,但它没有显示任何内容。有人请告诉我为什么会这样?
答案 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>);