我要求确保用户从ACTION_IMAGE_CAPTURE
中获取的所有图片由于服务器限制,我的应用中的Intent小于4 MB。这样做最好的方法是什么?如果重要,文件是JPEG。
到目前为止,我正在使用下面的强力方法,但这不起作用。 (编辑:现在可以使用下面给出的建议,但需要一段时间)我想知道是否有更高效的方法,也许使用BitmapFactory.Options.inJustDecodeBounds,可能会将像素数映射到字节数,所以我不需要这么多的IO操作。
private final int MAX_IMAGE_SIZE = 4194304;
private void shrinkImageFile(File file) throws IOException
{
Bitmap bitmap = BitmapFactory.decodeFile(file.getPath());
int quality = 90;
while (file.length() > MAX_IMAGE_SIZE )
{
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, out);
quality -= 10;
}
}