Java 在android中提高文件保存性能
我在外部存储器上有100个图像,我在for循环中执行以下两个任务Java 在android中提高文件保存性能,java,android,file,bitmap,Java,Android,File,Bitmap,我在外部存储器上有100个图像,我在for循环中执行以下两个任务 将每个项目作为位图加载,并将其与另一个位图合并 将结果保存为内存中的新文件 对于100张图片来说,这需要花费太多的时间。合并位图很快就可以退出,但将结果保存到文件中会花费太多时间。有什么办法来推动这个问题吗?将位图保留在内存中并批量保存文件可能会导致OutOfMemoryException 以下是合并位图的方法: 以下是我将位图保存到文件的方式: File imageFileFolder = new File(St
File imageFileFolder = new File(Statics.TEMP_PATH);
imageFileFolder.mkdirs();
FileOutputStream out = null;
File imageFileName = new File(imageFileFolder, imageName);
try {
out = new FileOutputStream(imageFileName);
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
请注意,所有这些都在一个异步任务块中。最后,我提供了将位图另存为jpeg的解决方案。保存250k png位图几乎需要500毫秒。jpeg格式的相同位图大约需要50毫秒。虽然质量不一样,但它看起来是质量和性能之间的折衷 最后,我提出了将位图另存为jpeg的解决方案。保存250k png位图几乎需要500毫秒。jpeg格式的相同位图大约需要50毫秒。虽然质量不一样,但它看起来是质量和性能之间的折衷 您可以尝试是否添加缓冲区,即
out=new BufferedOutputStream(new FileOutputStream(imageFileName),8*1024)代码>(也可以尝试更大的尺寸)有任何可测量的效果。什么是太多的时间?请告诉我有多少秒。还要告诉文件大小。使用cpu核心和线程。每芯一根线。保存文件是一项昂贵的任务。如果你有什么解决办法,请告诉我,我会告诉你区别。因为数据集不是很重要。@zapl好的,我会检查你没有提供我要的信息。我已经告诉过你一个解决方案。你可以尝试是否添加一个缓冲区,例如,out=newbufferedoutputstream(newfileoutputstream(imageFileName),8*1024)代码>(也可以尝试更大的尺寸)有任何可测量的效果。什么是太多的时间?请告诉我有多少秒。还要告诉文件大小。使用cpu核心和线程。每芯一根线。保存文件是一项昂贵的任务。如果你有什么解决办法,请告诉我,我会告诉你区别。因为数据集不是很重要。@zapl好的,我会检查你没有提供我要的信息。我已经告诉过你一个解决办法。