要在我的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”而不写临时文件
答案 0 :(得分:2)
如果您能够使用InputStream
或OutputStream
,则可以使用ByteArrayInputStream
或ByteArrayOutputStream
进行内存处理。
如果你有两个线程,你也可以一起使用PipedInputStream
和PipedOutputStream
在线程之间进行通信。
答案 1 :(得分:1)
您可以将数据写入ByteArrayOutputStream
并使用该流的字节数组:
ByteArrayOutputStream out = new ByteArrayOutputStream();
data.compress(Bitmap.CompressFormat.JPEG, 90, out);
// now take the bytes out of your Stream
byte[] imgData = out.toByteArray();