【问题标题】:Why bitmap compress with 100 quality became smaller为什么 100 质量的位图压缩变得更小
【发布时间】:2017-07-19 05:00:36
【问题描述】:

我正在使用带有 ImageFormat NV21 的相机进行预览,当我获取 NV21 数据时,我尝试使用以下方法获取可以显示到 ImageView 的字节。

字体:

public static byte[] n21ToBitmap(byte[] data, Camera camera) {
  try {
    Camera.Parameters parameters = camera.getParameters();
    Camera.Size size = parameters.getPreviewSize();
    YuvImage image =
      new YuvImage(data, parameters.getPreviewFormat(), size.width, size.height, null);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    image.compressToJpeg(new Rect(0, 0, size.width, size.height), 100, stream);
    Bitmap originBitmap = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
    stream.close();
    Matrix matrix = new Matrix();
    matrix.postRotate(270);
    Bitmap rotateBitmap =
      Bitmap.createBitmap(originBitmap, 0, 0, originBitmap.getWidth(), originBitmap.getHeight(),
          matrix, true);
    Bitmap temp = rotateBitmap.copy(rotateBitmap.getConfig(), true);
    Log.e("TAG", "n21ToBitmap(ImageUtils.java:"
      + Thread.currentThread().getStackTrace()[2].getLineNumber()
      + ")"
      + "temp:"
      + temp.getByteCount());
    stream = new ByteArrayOutputStream();
    temp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    byte[] bytes = stream.toByteArray();
    Log.e("TAG", "n21ToBitmap(ImageUtils.java:"
      + Thread.currentThread().getStackTrace()[2].getLineNumber()
      + ")"
      + "bytes:"
      + bytes.length);
  return bytes;
} catch (Exception ex) {
  Log.e(TAG, "Error:" + ex.getMessage());
}
  return null;
}

还有日志:

n21ToBitmap(ImageUtils.java:103)temp: 2073600
n21ToBitmap(ImageUtils.java:112)bytes:311627

那么,为什么字节长度变小了?

【问题讨论】:

  • 这是 JPG 格式压缩器 :)
  • 但是为什么你使用系统相机拍照时,你会得到一个大的图像?也是JPG图片。

标签: android bitmap camera


【解决方案1】:

看到字节长度是数组的大小,所以每个数组索引都有一些以字节为单位的值。

byte[] 字节; byte.length = 数组大小;

现在你的数组大小 = 20 = 字节测试长度; 每个索引都有一些字节值。 假设每个索引包含 1024 个字节。

所以总大小 = 20*1024 这是实际大小

在你的情况下,数组长度是 311627 并且每个索引都有一些字节的值 所以总大小 = 311627* 每个索引的值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多