1

谁能提供一个使用 libwebp NDK 库将图像编码为 webp 的示例?

我正在尝试使用以下代码将从相机捕获的图像编码为 RGB_565:

@Override
    public void onPreviewFrame(byte[] data, Camera camera) {
        int w = camera.getParameters().getPreviewSize().width;
        int h = camera.getParameters().getPreviewSize().height;
        try {
            int stride = (w + 1) & ~1;
            byte[] out = libwebp.WebPEncodeRGB(data, w, h, stride, 80f);
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

我已经尝试了几个 stride 值,范围从 w、w+1、w*2、w*3 和 w*4 ... 后者导致致命异常。

上面的代码生成一个黑白图像,将图片从侧面复制了好几次......

4

1 回答 1

0

我不知道 WebP 是否支持来自 RGB_565 流的编码,我的猜测是不支持。

作为替代方案,您可以将其转换为 RGB_888,例如此处给出的答案: 如何将 16 位 RGB565 转换为 24 位 RGB888?

然后正确的跨步方法是简单width*bytesPerPixel的,或者在 RGB_888 的情况下就是这样width * 3。编码 RGBA_8888 时,它将是width * 4.

于 2014-02-21T18:03:04.150 回答