2013-08-03 21 views
2

我想让用户选择他们想要减少图像文件大小的次数,可以是低,中或高,然后将图像上传到服务器。这部分是简单。减少Android中的图像文件大小(图像类型未知)

下一部分是文件大小的实际减少。我得到的图像URI,我想减少文件图像文件的大小,图像类型可能是PNG,JPG或其他。

我知道Bitmap.compress(),这是实现的唯一方法还是存在现有的开源库?

回答

1
Bitmap bitmap; 
bitmap = MyBitmapFactory.decodeFile(PATHTOPICT, UPLOAD_REQUIRED_SIZE); 
if (bitmap != null) { 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 

与方法(与谷歌找到):

public static Bitmap decodeFile(String filePath, final int REQUIRED_SIZE) { 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(filePath, o); 
    int width_tmp = o.outWidth, height_tmp = o.outHeight; 
    int scale = 1; 
    while (true) { 
     if (width_tmp <= REQUIRED_SIZE && height_tmp <= REQUIRED_SIZE) 
      break; 
     width_tmp /= 2; 
     height_tmp /= 2; 
     scale *= 2; 
    } 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
    o2.inSampleSize = scale; 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath, o2); 
    return bitmap; 
} 

如果事情得到NULL,它没有图像/ 按功率按比例2推荐!!!

+0

您的解决方案仅适用于JPEG吗?你能解释一下PNG和BMP吗? – orange

+0

如何将结尾从* .jpg编辑为* .whatyouwant或尝试使用Bitmap.CompressFormat.PNG –