将图像文件压缩为指定的大小

时间:2014-05-14 15:56:39

标签: android

我要求确保用户从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;
    }
}

0 个答案:

没有答案