【发布时间】:2015-12-06 05:13:04
【问题描述】:
我正在使用我的 Android 相机拍摄图像,但相机是 8 MP,所以我得到大约 4-5 MB jpeg 图像。因此,我尝试使用以下代码将它们压缩到 1 MB。
data 包含 jpeg 格式的图片,baos 是 ByteArrayOutputStream 类型。
while ( data.length > 1 * 1024 * 1024 )
{
System.gc();
Log.e(TAG,"Data size "+ (data.length/1024));
bitmapData.compress(CompressFormat.JPEG, compressionRatio, baos);
data = baos.toByteArray();
Log.e(TAG,"Data size "+ (data.length/1024));
compressionRatio -= 5 ;
}
它允许我捕捉一些图像,但在几张照片之后,应用程序崩溃并显示错误日志Out of memory。
谁能提供一个更好的压缩JPEG的解决方案。
谢谢你
【问题讨论】:
-
只需使用 FileOutputStream out = new FileOutputStream(file); bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
-
在前两个解决方案中,我不会得到 JPEG 图像的最终尺寸。因此,我无法根据 .jpeg 的大小进行压缩。在@SubbaReddyPolamReddy 的解决方案中,写入外部存储设备需要很长时间并且会减慢进程。
-
你使用设备或日食...它不会慢...
标签: java android camera android-camera image-compression