Android libwebp编码

时间:2013-08-16 03:35:37

标签: java android encode webp

是否有人能够提供使用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();
        } 
    }

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

上面的代码生成了一张黑白图像,它可以将图片全部复制几次......

1 个答案:

答案 0 :(得分:0)

我无法判断WebP是否支持RGB_565流的编码,我的猜测是否定的。

作为替代方案,您可以将其转换为RGB_888,例如在此处给出的答案中: How does one convert 16-bit RGB565 to 24-bit RGB888?

然后正确的步幅方法只是width*bytesPerPixel,或者在RGB_888的情况下,它将是width * 3。编码RGBA_8888时,它将是width * 4