2011-05-18 194 views
0

我有一個像素數組包含從0到255的值... 我已將它傳遞給我的C++函數... 這個像素數組我想將它保存爲jpeg圖像文件...將像素數組保存爲jpeg圖像文件C++

如何使用正確的編碼?

我有陣列轉換成二進制字符串 ,並將其保存到下面的代碼的文件,但它只是保存4字節大小的空白圖像...

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

    fclose(file); 

thnks

+1

發佈binaryStr的定義。 – 2011-05-18 12:21:26

+0

那段代碼不會爲你寫一個jpeg。它只會將該二進制數據轉儲到擴展名爲jpeg的文件中。難怪你會得到一個空的圖像文件。獲取一個jpeg庫,它也可以將頭文件等寫入文件。 – Sriram 2011-05-18 12:44:17

回答

0

從您的描述中可以看出,您需要將YUV數據轉換爲jpeg。正確? Imagemagick是一個非常強大的工具,可以處理這個問題。

來自wikipedias條目YUV: 通常將Y'值移位並縮放到範圍[16,235],而不是使用[0,255]的全部範圍。這種令人困惑的做法源於MPEG標準,並解釋了爲什麼16被添加到Y'以及爲什麼基本變換中的Y'係數總和爲220而不是255. U和V值(可能是正數或負數)與128讓他們總是積極的

iee 0-255不是YUV數據的有效範圍

7

使用libjpeg。不要試圖自己重新實現jpeg編碼,它有太多的方法可能會出錯。

0

似乎sizeof(binaryStr)是4.因此,您需要獲取binaryStr的長度,而不是sizeof(指針)的大小。而且更簡單的是使用像libjpeg這樣已經熟成的東西。

相關問題