1

要在我的 android 应用程序中处理一些图像,我目前使用如下代码:

   FileOutputStream fileOuputStream = new FileOutputStream(imgpath);
   [..DO SOME STUFF..]
   Bitmap data = BitmapFactory.decodeByteArray(bFile, 0, bFile.length, options);
   data.compress(Bitmap.CompressFormat.JPEG, 90, fileOuputStream);
   [..DO SOME STUFF..]              
   File file = new File(imgpath);   
   FileInputStream imageInFile = new FileInputStream(file);
   byte imageData[] = new byte[(int) file.length()];
   imageInFile.read(imageData);
   [..DO SOME STUFF..]
   file.delete();
   //NOTE: The code is all in the same method

问题是使用此方法将我的图像从代码的一部分传递到另一部分会创建一个临时文件。

我正在寻找一种使用内存变量读取/写入文件数据的方法,例如“通用流”,其中存储数据以替换“FileInputStream”和“FileOutputStream”的使用并且不写入临时文件。

4

2 回答 2

2

如果您能够使用InputStreamorOutputStream您可以使用ByteArrayInputStreamorByteArrayOutputStream在内存中处理数据。

如果您有两个线程,您还可以使用PipedInputStreamandPipedOutputStream一起在线程之间进行通信。

于 2013-07-11T14:07:29.153 回答
1

您可以将数据写入 aByteArrayOutputStream并使用该流的字节数组:

ByteArrayOutputStream out = new ByteArrayOutputStream();
data.compress(Bitmap.CompressFormat.JPEG, 90, out); 

// now take the bytes out of your Stream
byte[] imgData = out.toByteArray();
于 2013-07-11T14:13:18.710 回答