将像素数组保存到jpeg图像文件c ++

时间:2011-05-18 12:19:28

标签: c++

我有一个包含0到255之间值的像素数组... 我已将它传递给我的c ++函数... 这个像素数组我想把它保存到jpeg图像文件...

如何使用正确的编码?

我已将数组转换为二进制字符串  并将其保存到下面代码中的文件中,但它只保存了一个4字节大小的空图像......

    FILE *file = fopen("/media/internal/wallpapers/04.jpeg", "w+");
    fwrite(binaryStr , 1 , sizeof(binaryStr) ,file );    

    fclose(file);

thnks

4 个答案:

答案 0 :(得分:7)

使用libjpeg。不要试图自己重新实现jpeg编码,有太多方法可能出错。

答案 1 :(得分:1)

我认为你需要一个JPEG库,比如libjpeg。

答案 2 :(得分:0)

从您的描述中看起来您需要转换为jpeg的YUV数据。正确? Imagemagick是一个非常强大的工具,可以解决这个问题。

来自YUV的wikipedias条目: Y'值通常被移位并缩放到范围[16,235],而不是使用[0,255]的整个范围。这种令人困惑的做法源于MPEG标准,并解释了为什么16被添加到Y'以及为什么基本变换中的Y'系数总和为220而不是255.U和V值,可以是正数或负数,与128相加。使他们永远积极

即。 0-255不是YUV数据的有效范围

答案 3 :(得分:0)

看起来sizeof(binaryStr)是4.所以,你需要得到binaryStr的长度,而不是sizeof(指针)。并且更简单地使用像libjpeg这样已经煮过的东西。