Bitmap.compress to png - 仅在文件大小合适时保存

时间:2014-07-31 16:13:42

标签: android bitmap compression png

我有一个使用相机意图拍摄的jpg,显示给用户(进行一些尺寸调整),最终保存为png。

我首先使用
将文件读入位图 BitmapFactory.decodeFile(path);

然后我使用
减少图像大小(以像素为单位) Bitmap.createScaledBitmap()

最终我想使用
将调整大小的位图保存到png中 FileOutputStream fos = new FileOutputStream(pngFile); bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();

问题是最终的png文件不应超过一定的大小(以字节为单位)。如果是这样,我想继续调整位图的大小,直到我的文件足够小。 我无法在png压缩之前检查它(虽然仍然是位图,使用bitmap.getAllocationByteCount() - API 19及更高版本),因为位图总是大于png,(至少从我看到的,包括我在paint中试过的一些基本测试,而png是我最后需要的那个。

当然,我总是可以将png保存到磁盘,读取已保存文件的长度,如果读取位图太大,再次减少,再次保存等等。但我不想这样做......

还有其他办法吗?

0 个答案:

没有答案