Android图片转base64压缩大小

在Android开发中,我们经常需要处理图片的相关操作,比如将图片转换为base64格式,或者对图片进行压缩以减小文件大小。本文将介绍如何在Android中实现图片转换为base64并进行压缩的操作,并附有代码示例。

图片转base64

在Android中,可以通过Bitmap将图片转换为base64格式。首先需要将图片文件读取为Bitmap对象,然后将Bitmap对象转换为base64字符串。以下是一个简单的示例代码:

public String bitmapToBase64(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    return Base64.encodeToString(imageBytes, Base64.DEFAULT);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在以上代码中,我们首先将Bitmap对象压缩成JPEG格式,质量为100%,然后将压缩后的数据转换为base64字符串。

图片压缩

对于需要上传到服务器或者在APP中展示的图片,通常需要对图片进行压缩,以减小文件大小并提高加载速度。以下是一个简单的图片压缩方法:

public Bitmap compressImage(Bitmap image) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 50, baos); // 压缩质量为50%
    ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
    BitmapFactory.Options newOpts = new BitmapFactory.Options();
    newOpts.inJustDecodeBounds = true;
    Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);

    int w = newOpts.outWidth;
    int h = newOpts.outHeight;
    float hh = 800f;
    float ww = 480f;
    int be = 1;
    if (w > h && w > ww) {
        be = (int) (newOpts.outWidth / ww);
    } else if (w < h && h > hh) {
        be = (int) (newOpts.outHeight / hh);
    }
    if (be <= 0)
        be = 1;
    newOpts.inSampleSize = be;
    newOpts.inJustDecodeBounds = false;
    isBm = new ByteArrayInputStream(baos.toByteArray());
    bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);
    return bitmap;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

在以上代码中,我们将图片的质量压缩到50%,然后根据设定的宽高值对图片进行缩放,最终返回压缩后的Bitmap对象。

完整示例

下面是一个完整的示例,将图片转换为base64格式并压缩:

public String imageToBase64(String path) {
    Bitmap bitmap = BitmapFactory.decodeFile(path);
    bitmap = compressImage(bitmap);
    return bitmapToBase64(bitmap);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

在以上示例中,我们首先根据图片文件路径读取Bitmap对象,然后对Bitmap对象进行压缩,最后将压缩后的Bitmap对象转换为base64字符串。

总结

通过本文的介绍,您可以了解如何在Android中实现图片转换为base64格式并进行压缩的操作。这些操作对于需要上传或展示图片的应用程序非常有用,可以提高图片加载速度并节省带宽。希望本文对您有所帮助!

状态图

转换为Bitmap对象 转换为base64字符串 压缩图片

饼状图

图片转换为base64和压缩比例 40% 60% 图片转换为base64和压缩比例 转换为base64 压缩图片

通过以上的状态图和饼状图,可以更直观地了解图片转换为base64和压缩的整个流程。希望本文对您有帮助,谢谢阅读!