如何使用Libwebp从Webp解码和编码?

时间:2015-01-21 19:39:29

标签: c++ bitmap gdi+ webp image-formats

我在使用c ++中的libwebp从webp编码和解码时遇到问题。 我构建了这个测试应用程序,它采用我创建的webp文件(在chrome中看起来很好),并尝试将其解码为rgb,然后返回到webp,只是为了理解如何使用它,输出错误:

//Code before reads the webp file, and assigning it to a uint8_t buffer called "pic" ///

WebPConfig config;
ASSERT(WebConfigIit(&config) == TRUE)

int width=0 height =0;
uint8_t * rgb = WebPDecodeRGB(pic, size, &width, &height)
ASSERT (rgb != NULL)
// At this point the width and the height is valid, and the rgb is assigned.

uint8_t* originalPic = null;
size_t size = WebPEncodeRGB(rgb, width, height, height, &originalPic);
// Didn't quite know what to put in the stride param.. 

/// Code after saves the originalPic buffer to a file ////

正如你所看到的,我试图做的就是设法对webp进行编码和解码,并尝试将其保存回文件,但是当我尝试打开文件时,它看起来已损坏。

你能帮我弄清楚问题是什么吗? 更重要的是,我很高兴知道更多关于步幅参数,关于rgb格式,以及如何将图片转换为它以检查我的代码是否有效。

非常感谢!

1 个答案:

答案 0 :(得分:1)

WebPEncodeRGB的第4个参数是步幅(https://stackoverflow.com/a/2004638)。除非高度与步幅一致,否则传球高度可能无效。