2017-08-10 45 views
-4

嘗試從輸入流獲取字節數據,如下面的代碼所示。但是,字節變量是空的。可能是什麼原因? FYI-圖像在給定的uri中可用,因爲我可以在imageView1中看到圖像。 (測試棒棒糖)。從android輸入流獲取字節[]給出空值

final InputStream imageStream = getContentResolver().openInputStream(imageUri); 
var_Bitmap = BitmapFactory.decodeStream(imageStream); 
ImageView imageView1 = (ImageView) findViewById(R.id.ui_imageView_browse); 
imageView1.setImageBitmap(var_Bitmap); 
byte[] bytes = IOUtils.toByteArray(imageStream); 
OutputStream out; 
String root = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"; 
File createDir = new File(root+"master"+File.separator); 
createDir.mkdir(); 


File file = new File(root + "master" + File.separator +"master.jpg"); 
path=root+"master"+File.separator+"master.jpg"; 
file.createNewFile(); 
out = new FileOutputStream(file); 
out.write(bytes); 
out.close(); 
+1

輸入流已經被'decodeStream'讀入EOF,所以沒有東西可讀,爲什麼你想要複製你的圖像呢? – pskink

+0

@pskink,謝謝,這是問題,它工作。 – djac

回答

1

由於pskink suggested in a comment,該問題是輸入流已讀至decodeStream的EOF,所以沒有更多的閱讀。

爲了解決這個問題,我爲inputstream創建了一個臨時變量。

0

試試這個:

public byte[] getBytes(InputStream inputStream) throws IOException { 
     ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); 
     int bufferSize = 1024; 
     byte[] buffer = new byte[bufferSize]; 

     int len = 0; 
     while ((len = inputStream.read(buffer)) != -1) { 
      byteBuffer.write(buffer, 0, len); 
     } 
     return byteBuffer.toByteArray(); 
    } 

希望它能幫助。