我有一个使用相机意图拍摄的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保存到磁盘,读取已保存文件的长度,如果读取位图太大,再次减少,再次保存等等。但我不想这样做......
还有其他办法吗?