Camera2 API - jpeg捕获文件太大

时间:2018-03-29 07:49:36

标签: android android-camera2

我使用Camera2 api进行静态图像捕获并将其保存到jpeg文件中。问题是文件的大小总是> 900kb,即使我将图像尺寸设置为可用的最小尺寸并将jpeg质量降低。

这就是我在ImageAvailableListener中保存文件的方法。它是一个xamarin项目,所以代码在c#中。

image = reader.AcquireLatestImage();
ByteBuffer buffer = image.GetPlanes()[0].Buffer;
byte[] bytes = new byte[buffer.Remaining()];
buffer.Get(bytes);
output = new FileOutputStream(File);
output.Write(bytes);
output.Close();

该文件应该是~20kb,那么为什么我的文件大小不能低于900kb?

2 个答案:

答案 0 :(得分:1)

您还可以降低捕获图像质量

mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
            mPreviewRequestBuilder.set(CaptureRequest.JPEG_THUMBNAIL_QUALITY, (byte) 70); // add this line and set your own quality

答案 1 :(得分:0)

我明白了。需要创建一个位图来应用压缩:

var content = new Vue({
    el: '#content',
    data: {
        items: data
    }
});

<div class="short" v-for="item in items">
    <div class="top">
        <img :src="item.userAvatar" />
        {{ item.userName }}
    </div>
    <div class="bottom">
        <div v-for="(i, idx) in item.items" :key="idx">{{ i.name }} {{ i.type }}</div>
    </div>
</div>