将图像发送到Web服务器时出现OutOfMemoryException

时间:2012-12-15 07:06:52

标签: android base64 out-of-memory

因此,要将图像发送到Web服务器,我需要将其编码为base64,然后在服务器端进行解码。

这就是我所关注的。

但是我在这行代码中得到了OutOfMemoryException:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

图片大小 1mb 。那么,还有其他方法吗?

我读到了这个:

Sending images using Http Post

建议使用 MultipartEntity 。但我在哪里可以找到这些图书馆?因为其中一个链接坏了。

代码:

Uri selectedImageUri = data.getData();
String selectedImagePath = getPath(selectedImageUri);

try {
    File imageFile = new File(selectedImagePath);
    Bitmap bitmap = BitmapFactory.decodeFile(imageFile
            .getAbsolutePath());
    setImage.setImageBitmap(bitmap);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] b = baos.toByteArray();
    base64code = Base64.encodeToString(b, Base64.DEFAULT);
    } catch (Exception e) {

    e.printStackTrace();
    }

可能有一种方法可能会降低质量。但是,如果我将其设置为 20 30 ,并且图像已经是低质量1(取自低端设备)。我可能会得到质量差的图像。

做一些事情,比如检查尺寸并降低质量。我认为这不是一个好主意。

谢谢

1 个答案:

答案 0 :(得分:1)

使用MultipartEntity将图像上传到服务器是一个不错的选择。

MultipartEntity库下载:

apache-mime4j-0.6.jar

httpmime-4.0.1.jar

希望它对你有所帮助。

感谢。