【问题标题】:Android libwebp encodingAndroid libwebp 编码
【发布时间】:2013-08-16 03:35:37
【问题描述】:

谁能提供一个使用 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 ... 后者导致致命异常。

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

【问题讨论】:

  • 必须使用 NDK 才能让程序使用 WebP?

标签: java android encode webp


【解决方案1】:

我不知道 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-10
    • 2021-11-10
    • 2018-01-01
    • 1970-01-01
    • 2022-11-10
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多